使用DELETE语句删除表数据后,后面新增的数据id可能是之前删除数据的id,如何避免?

发布于 2022-01-06 02:01:30 字数 289 浏览 924 评论 8

现在有三张表:

主表: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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

回眸一笑 2022-01-07 20:46:20

好像是mysql5.7之前的版本会出现,如果mysql重启之后id会取当前表最后一条id继续增加

岁吢 2022-01-07 20:46:19

对的, 表A就很简单的三个字段,id,json格式的存储,还有一个模板表id

柳若烟 2022-01-07 20:46:19

一般自增的话  删除了不可能出现id重复的情况啊

是不是什么地方手工设置id了

无声静候 2022-01-07 20:46:18

好像是mysql5.7之前的版本会出现,如果mysql重启之后id会取当前表最后一条id继续增加

顾挽 2022-01-07 20:45:24

回复
我们也有使用5.6 ,但没有出现过复用自增id的情况。 这个是数据的基本的功能而且又是个比较常用的。如果这个自动ID有这个问题,这么长时间了,大家应该早就发现了。 感觉 还是 代码处理逻辑方面的原因导致的上面的现象,建议再排查了。 如果排查不出来,就写个专门的逻辑处理这种情况或规避这个现象。例如 在删除 表A记录中,就更改历史表H中对应的记录的ID为另一套自增ID。

野心澎湃 2022-01-07 20:44:47

使用的什么数据库? 表A的 简写表结构是什么? 把这些写明了,大家才好来判断.

一般自增id 都是数据库提供的基本功能,这个ID 是不会复用的.

你曾走过我的故事 2022-01-07 17:48:48

没有啊

臻嫒无言 2022-01-07 12:35:04

检查下insert A表你是不是哪里有set id字段。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文