【问题标题】:Reset autoincrement to fill empty gaps重置自动增量以填补空白
【发布时间】:2012-06-05 12:19:41
【问题描述】:

我目前正在构建一个简单的用户数据库,我在其中使用 AUTO INCREMENT 来获取唯一的用户 ID。当我删除单个用户时,用户 ID 会出现空白。我很好奇是否可以让自动增量填充这些空白,而不是使用下一个最高的数字:

用户名
1000
1001
1002
1004

现在我插入表中的下一个用户 ID 将是 1005,但我希望它是 1003。这甚至可能吗?

【问题讨论】:

  • 有可能。不要这样做。 auto_increment 有一个目的,它不是给你漂亮的序列号,而是唯一标识一条记录。如果您需要某种顺序编号,请创建一个触发器并确保您自己具有一致性。篡改auto_increment 的原因和影响有很多。 TL;DR:不要这样做而忘记它。
  • 为什么要这样做?即使用户 1003 已被删除,如果您重复使用该 id,可能会导致混淆记录是指新的 1003 还是已删除的。
  • 真的只是好奇。你如何处理有一天你会达到最大值的事实?或者只是像 LONG INT 一样设置并希望最好?

标签: mysql


【解决方案1】:

不使用自动增量这是不可能的。您将需要手动进行一些额外的编码。 通常,如果您保持最大值足够高,跳过的记录不会有太大问题。

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 2015-08-19
    • 2016-08-15
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多