【问题标题】:How to maintain continuos auto_increment values in MySQL如何在 MySQL 中保持连续的自动增量值
【发布时间】:2015-10-26 08:24:19
【问题描述】:

假设我有 2k 行,当前最高 auto_increment 值为 2000。现在,如果我从顶部删除 1000 行(1001 到 2000),auto_increment 仍然从 2001 继续,而不是 1001。这会导致不必要的高auto_increment 的值。有没有办法甚至“自动调整”这个?

我尝试了类似下面的方法,但它不起作用

ALTER TABLE `updatelogs` AUTO_INCREMENT = (select max(update_id) from updatelogs);

【问题讨论】:

  • change auto_increment within same table using subquery mysql 的可能重复项...你不能这样做,但你没有理由这样做。
  • 是的,这似乎是那个问题的重复!至于原因,如果删除了大约 2000 行中的最后 1000 行,则需要这样做......自动增量将从 2001 年继续,我希望它从 1001 年继续!
  • 我的感觉是你应该让 MySQL 引擎处理自动增量列(关键字:auto)。
  • 对我来说听起来像是XY problem。你问的很可能不是你需要的。
  • @vhu,对!需要编辑问题!

标签: mysql


【解决方案1】:

在删除任意数量的记录后,您可以使用以下查询重置自动增量列:

ALTER TABLE `updatelogs` AUTO_INCREMENT = 1;

正如this useful SO post 所述,这会将自动增量列重置为MAX(update_id) + 1

【讨论】:

  • 对!我很抱歉......错过了这个技巧。现在,我明白你之前为什么说没必要了!
猜你喜欢
  • 2011-01-14
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
相关资源
最近更新 更多