一尘不染

即使由于错误而插入失败,MySQL自动增量值也会增加

sql

当我从用户那里接收数据时,我每次都会验证输入的格式(PHP)。我唯一无法验证(或我不想)的是约束(例如外键)违规。我让DML引发并出错,并让数据库驱动程序引发异常。捕获它后,我只是通过MySQL的错误代码打印出一些错误消息。

问题是,即使插入失败,我autoincrement仍然看到序列还在增长。我该如何预防呢?


阅读 165

收藏
2021-03-08

共1个答案

一尘不染

这就是自动增量值和序列的工作方式。使用值时,如果事务失败,则不会回收该值,并且会回滚该事务。

由于您使用的是自动增量值,因此实际值并不重要,因此除了缺少数字的美观性之外,空格也不应该成为问题。

2021-03-08