【发布时间】:2019-06-10 16:55:51
【问题描述】:
我删除了表中的前 1000 行,我试图将 auto_increment 设置为 1,但它只是将编号自动设置为最大 ID 值+1 .. 我怎样才能让它从 1 开始编号并继续到1000?
ALTER TABLE T auto_increment = 1;
【问题讨论】:
-
简答:你不能!请阅读:What is the XY problem?
-
@PaulSpiegel 所以即使数字 1 在过去我们有更大的值时已被删除,也不可能给出一个新的行号 1,对吗?
-
不使用 AUTO_INCREMENT。正如您已经知道的那样,AI 值将被重置为“最大 ID 值+1”。这是记录在案的行为。对于 InnoDB - 请参阅:AUTO_INCREMENT Handling in InnoDB“ALTER TABLE ... AUTO_INCREMENT = N 只能将自动增量计数器值更改为大于当前最大值的值。”
-
" 所以即使数字 1 过去已被删除,也不可能提供新的行号 1" - 您可以通过将 ID 设置为特定(非重复)值来手动完成一个 INSERT 或 UPDATE 语句。但是,使用 AOUTO_INCREMENT 功能就没有意义了。
-
为什么不能将表中的数据放入新表,删除原始表,重新创建原始表,然后将数据重新加载到该表中?
标签: mysql auto-increment