【问题标题】:How to block auto_increment to set the next number always as maxnumber + 1如何阻止 auto_increment 将下一个数字始终设置为 maxnumber + 1
【发布时间】:2015-11-06 06:19:03
【问题描述】:

我有一个带有 auto_incremented 字段的表。

通常自动递增的工作方式是它总是从最大值 + 1 开始。

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

我的问题:

mysql 有什么方法可以强制自动递增以跟随其系列?
如果遇到重复,它可以跳过它。

【问题讨论】:

  • 是的。如果您无论如何关心自动递增 id 的值,请不要使用 AUTO_INCREMENT

标签: mysql auto-increment


【解决方案1】:

我怀疑这是否可以做到。想象一下这种情况:您插入 5 行 ID 为 1 到 5 的行,删除 ID 为 2 到 4 的行,最后得到两行,ID 为 1 和 5 的行。现在您插入另一行。您希望数据库现在使用什么 ID,2 还是 6?

我不希望数据库执行前者,因为我的程序可能依赖于一些主键存在(想想一个已删除的具有唯一 ID 的博客文章。你想要当他们点击与该 id 对应的 URL 而不是仅显示 404 时,他们会看到不同的博文?)

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

  • id = 100 的行已像您提到的那样手动插入。
  • 存在 100 行,ID 为 1 到 100,行 3 到 99 被删除。

当然,您可能有回收 id 的用例,但您必须自己做。但在这样做之前,请确保你真的想要它:)

【讨论】:

    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2011-06-08
    • 2014-03-17
    • 2017-03-28
    • 2021-12-29
    • 2015-12-09
    相关资源
    最近更新 更多