使用DELETE语句删除表数据后,后面新增的数据id可能是之前删除数据的id,如何避免?
现在有三张表:
主表:A(id自增)
细表:A_def(与主表为一对一)
历史表:H;
流程走完后,会删除主表A对应的数据,但不删除细表A_def的数据,正常来说A_def表中A_id不应该出现重复的id,但有时候会出现相同id,导致细表会出现found2等问题
历史表是在删除主表A后,将A表数据存入H表,如果A表id出现“重复”,那么查询历史表时也会出现found2,正常来说A表id必须是唯一的,即使之前数据删除了也不应该重新计数
(删除时使用DELETE语句)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
好像是mysql5.7之前的版本会出现,如果mysql重启之后id会取当前表最后一条id继续增加
对的, 表A就很简单的三个字段,id,json格式的存储,还有一个模板表id
一般自增的话 删除了不可能出现id重复的情况啊
是不是什么地方手工设置id了
好像是mysql5.7之前的版本会出现,如果mysql重启之后id会取当前表最后一条id继续增加
回复
我们也有使用5.6 ,但没有出现过复用自增id的情况。 这个是数据的基本的功能而且又是个比较常用的。如果这个自动ID有这个问题,这么长时间了,大家应该早就发现了。 感觉 还是 代码处理逻辑方面的原因导致的上面的现象,建议再排查了。 如果排查不出来,就写个专门的逻辑处理这种情况或规避这个现象。例如 在删除 表A记录中,就更改历史表H中对应的记录的ID为另一套自增ID。
使用的什么数据库? 表A的 简写表结构是什么? 把这些写明了,大家才好来判断.
一般自增id 都是数据库提供的基本功能,这个ID 是不会复用的.
没有啊
检查下insert A表你是不是哪里有set id字段。