【问题标题】:Auto increment does not change自动增量不变
【发布时间】:2012-07-20 13:16:47
【问题描述】:

我正在尝试更改自动增量值以使其从特定数字开始:

ALTER TABLE batchinfo AUTO_INCREMENT = 20000;

但是当我查询记录时,旧的编号 (1,2...) 仍然存在,尽管该语句似乎成功了。我正在使用 MySQL 工作台。可能是什么问题?

【问题讨论】:

  • 它只影响您插入的新记录。它不会影响您现有的值。

标签: mysql


【解决方案1】:

更改AUTO_INCREMENT 不会更改过去生成的值,它只会设置下一个 生成的值。如果要更改过去的值,则需要执行UPDATE。例如,像这样:

UPDATE batchinfo SET id = id + 19999;

注意不要有任何其他表引用此列,否则它们的引用将失效。 (除非这些引用被正确注明;只有 InnoDB 表支持外键。所有这些外键都必须用 ON UPDATE CASCADE 定义,此命令才能达到预期效果。)

【讨论】:

  • +1 因为很清楚为什么 AI 不会更改所有过去的值,如何更改所有过去的值以及小心提及。很好的答案。
【解决方案2】:

那个查询会改变 next AUTO_INCREMENT 的值。它不会更改现有值。

如果您已经有值 1、2、3、... 100,然后将 AUTO_INCREMENT 更改为 20000,则下一个输入的值将不是 101,而是 20000。

【讨论】:

    【解决方案3】:

    您的查询为从现在开始生成的自动增量值设置了一个新的起始值。它不会更新已经存储在表中的自增值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      相关资源
      最近更新 更多