【问题标题】:MySQL table with AUTO_INCREMENT primary id does not release the number after a rollback具有 AUTO_INCREMENT 主 ID 的 MySQL 表在回滚后不释放数字
【发布时间】:2011-06-12 15:32:13
【问题描述】:

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

如果我将新记录作为事务的一部分插入并且我必须回滚该事务,则 ID 会被占用并消失。因此,下一条记录的 ID 会变高,即使该 ID 没有被使用。

账单最好有一个线性编号,这样会计可以找出是否有问题。

【问题讨论】:

    标签: mysql transactions auto-increment


    【解决方案1】:

    出于并发原因,自动增量值不能随您的事务“回滚”。如果在您的事务处理过程中另一个进程插入了记录,那么您以后可能会与他们的 ID 发生冲突。

    例如,假设您在进程“A”中的事务获取 ID 1,2 和 3。另一个进程“B”运行并获取 ID 4 和 5。如果身份随着您的事务和下一个进程回滚“ C" 需要 5 个 ID,它会得到 1,2,3,4,5 但 4 和 5 已经被进程 "B" 占用了。

    【讨论】:

    • 谢谢。我想它就是这样:-)
    猜你喜欢
    • 2021-11-07
    • 2010-09-20
    • 2014-01-18
    • 2012-05-31
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多