mysql rollback与AI

探讨了MySQL中使用AutoIncrement特性时遇到的问题,尤其是在事务回滚后ID自增行为的异常现象。作者通过实际案例分析了问题原因,并提出了可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用mysql的时候,将ID设置成了AutoIncremental(AI)自动累加。这个的作用就是每次插入新的数据的时候不需要告知这一行的数据的ID,数据库直接根据前一个ID值+1作为新插入数据的ID。
在我的程序中,包含了出错回滚的代码,跑了一个晚上回来发现,ID值突变了,比如上一个ID还是1000下一个就变成了2000。
查看了统计数据,发现夜间很长一段时间一直都在插入操作,那么插入数据时候ID自加的操作应该是执行了。后来才想到,可能是回滚之后默认ID的值已经增加了,尝试了一下,果然如此。
insert之后rollback,再insert时ID已经比上一个ID大2了。
想想也是,要将能够把大部分操作回滚的机制连带AI一起回滚是不好实现的,谁知道回滚的时候要不要将AI的值-1呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值