具有AUTO_INCREMENT主ID的MySQL表在回滚后不释放该数字

时间:2011-01-20 17:49:38

标签: mysql transactions auto-increment

我有一张有账单的桌子。插入新记录后,每个帐单都有一个来自数据库的ID。该字段是一个设置了AUTO_INCREMENT的INTEGER。

如果我在事务中插入新记录并且我必须回滚此事务,那么ID就会被删除。因此,即使此ID未被使用,下一条记录也会成为更高的ID。

账单最好有一个线性编号,因此会计可以判断出是否有问题。

1 个答案:

答案 0 :(得分:5)

出于并发原因,自动增量值无法与您的事务“回滚”。如果另一个进程在您的事务处理过程中插入了记录,您将有可能在以后与其ID发生冲突。

例如,假设您的事务处理过程“A”抓取ID 1,2和3.另一个进程“B”运行并获取ID 4和5.如果身份回滚与您的事务和下一个进程“ C“需要5个ID,它将获得1,2,3,4,5但过程”B“已经使用了4个和5个。