mysql - 关于数据逻辑删除的问题?
问 题 我在表中逻辑删除了一条数据,表中存在唯一索引的字段,逻辑删除后,我有要insert一条一样的数据,这样肯定不行,如何解决这个问题? 解决方案 1.如1L所言,取消唯一约束,靠程序控制; 2.如果是mysql的话,可以在insert语句后面加上on duplicate key update status = ? 3.同样是mysql的情况下,也可以用replace into代替insert into; 关于这个问题其实还有很大的思考空间,最灵活的方法是1,但同样要面临产生脏数据的风险(脏数据对程序代码的影响就不多说了,处理过的都懂的);2、3理论上只能保存最近一次逻辑删除的记录 采用哪种方法视乎业务上对逻辑删除数据保存要求,如果要保留历史数据而又不想采用方法1的话,可以在2、3基础上实时(代码层面)或定时对逻辑删除的数据迁移至历史表。 以上是本人知道的方法,如果还有更好的方法,希望不吝赐教。
1546 2022-07-19
编程技术问答社区
php - 高并发网站的自增主键如何防止出现重复情况?
问 题 比如说新浪微博的微博id,注册用户的用户uid,百度贴吧的帖子号tid等等我观察过都是按照发布时间呈现递增关系,但是我很好奇这种高并发网站一般都是分布式数据库,数据库之前肯定还有缓存,消息队列等中间件,那么如何保证最终插入多个数据库时他们之间主键自增的情况下不出现重复? 而且现在也有很多碰撞概率较低的随机id生成算法为什么没有被这些高并发网站所采用?是否是效率原因? 解决方案 给你推荐一个科普ID生成器或者叫全局发号器的知识文章 http://weibo.com/p/1001603800404851831206 然后再推荐一个用PHP实现的Twitter内部命名为SnowFlake的ID生成器 https://github.com/sschiau/Particle.php
162 2022-07-19
编程技术问答社区
数据库开发 - Oracle数据库的rownum为什么会出现这个问题?
问 题 我有一个“亲子关系”的一张表parentage: SQL> select * from parentage; FATHER CHILD ---------- ---------- David Cindy David Tony Tom Amy Tom Bob Tom Nick 为了练习rownum关键字,我想输出前两行,如下语句可以正确运行: SQL> select * from parentage where rownum select * from parentage where rownum>2; 未选定行 系统提示未选定行,为什么呢?明明表中有5行啊? 还有
142 2022-07-17
编程技术问答社区
权限控制 - 用户权限/菜单模块数据库设计
问 题 关于权限模块的3种设计方案 分别有用户表、菜单、权限3张表t_users,t_menus,t_roles 用户权限对照表t_users_roles,权限菜单对照表t_roles_menus 比如:业务主管有所有业务菜的权限,给用户设业务主管权限 1:一级菜单01 二级菜单0101 - 0199 三级菜单010101 - 019999 2:二级菜单增加父id字段指定 例如 t_menu(menu_id,parent_id)values(101,1) 3:json存储,此法据说是可以减轻数据库压力 存取json进数据库某字段 请问以上3种设计哪种比较好,各有什么优缺点呀。现在目前大前端或者管理系统前后台更偏向更流行的是哪种。谢谢啦。 解决方案 第一种 查询麻烦 第二种 比其他两种好 第三种 修改麻烦
1482 2022-07-17
编程技术问答社区