【问题标题】:Does resetting auto_increment reorder id's?重置 auto_increment 是否会重新排序 id?
【发布时间】:2013-10-06 09:24:18
【问题描述】:

英语不是我的母语,如果我的问题有什么不清楚的地方,请原谅我,我会尽力澄清。

我必须在 MySQL 中进行更改,我对结果有点担心,因为更改将会生效。我有一个表,其 id 为 1-800,然后有一个很大的跳跃到 10000、10001 等。我读了多个问题,比如this one,你可以使用

ALTER TABLE tablename AUTO_INCREMENT = 1

我的问题是:

  1. 这会重新排序当前键吗?
  2. 当我的 id 恢复到 10000 时会发生什么情况,id 会被覆盖吗? (该列是主要的)

如果它确实对我的键重新排序或它们被覆盖(我不能发生这种情况),保持我的表完整但将 id 重置为 801 的最佳解决方案是什么?我绝对需要保持结果不变!!!

感谢您抽出宝贵时间阅读/回答。 干杯。

【问题讨论】:

  • 1. “这会重新排序当前的键吗?” 2号。阅读stackoverflow.com/questions/2615417/…。谷歌“自动增量环绕”
  • 更改 AUTO_INCREMENT 值不会不会重新排序 ID。
  • @Michael-Villeneuve:密钥不是增量的重要吗?如果是这样,那么您不应该为此使用 AUTO_INCREMENT。尽管有它的名字,但这不是它的用途。
  • 我认为这很重要,因为我的客户将他的 Freshbooks 发票与客户 ID 同步。如果他们一个接一个,他更容易保持井井有条。

标签: mysql sql database


【解决方案1】:

MySQL 不允许您将自动增量设置为低于当前最大键值的值。因此,您的应用程序必须手动设置 id 值。

【讨论】:

  • 不,它只是将自动增量设置为当前最大值 + 1。
【解决方案2】:

使用此查询,将表名和 id 更改为适当的表名和列名:

更新表名集 id = id - 9199 where id >= 10000

然后将您的自动增量设置为适当的下一个值。

您可能希望在更改之前保留表格的备份副本。

【讨论】:

  • 感谢您回答我的问题。但是,我不想更新 10000+ 的密钥。我需要把它们留在那里(我正在研究一个糟糕的系统)。
猜你喜欢
  • 1970-01-01
  • 2011-10-23
  • 2013-03-22
  • 2012-01-11
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2011-04-12
  • 2011-10-01
相关资源
最近更新 更多