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

Rem*_*emy 1 mysql transactions auto-increment

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

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

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

Joe*_*lli 5

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

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