如何阻止auto_increment将下一个数字设置为maxnumber + 1

时间:2015-08-13 10:23:02

标签: mysql auto-increment

我有一个包含auto_incremented字段的表。

通常自动增量的方式是始终以最大值+ 1开始。

例如如果我插入两个记录,自动增量字段最初取1和2作为值。
现在,当我通过明确提到id字段值为100来添加第三行时。 在此之后,如果我添加第四条记录,则自动增量值将为101,而不是3.

我的问题:

在mysql中是否有任何方法可以强制执行自动增量以跟随其系列?
如果遇到重复,则可以跳过它。

1 个答案:

答案 0 :(得分:1)

我怀疑是否可以这样做。想象一下这种情况:你插入5行,其中id为1到5,并删除带有id 2到4的行,最后是两行,id为1,id为5.现在你插入另一行。您希望数据库现在使用什么ID,2或6?

我不希望数据库执行前者,因为我的程序可能依赖于某些主键而不是在那里(想想一个带有唯一ID的已删除的博客帖子。你想要吗?有人在点击与该ID对应的网址时看到不同的博客帖子而不是只显示404?)

回到你的问题,DB并不真正知道以下两种情况之间的区别:

  • 如您所述,手动插入id = 100的行。
  • 存在100行,其中ID为1到100,行3到99被删除。

当然,您可能有一个用于回收ID的用例,但您必须自己完成。但在此之前,确保你真的想要它:)