当大量数字已经存在时重置MySQL auto_increment?

时间:2011-01-20 08:18:57

标签: mysql auto-increment

我有一个带有自动递增列的表。我需要将其中一行设置为1000而不再触摸它,但现在我已将其设置为1000,自动增量始终保持在1001并且拒绝从1开始。有没有办法解决这个问题? / p>

5 个答案:

答案 0 :(得分:7)

你不能:

  

要更改的值   AUTO_INCREMENT计数器用于   新行,执行此操作:

     

ALTER TABLE t2 AUTO_INCREMENT = value;

     

您无法将计数器重置为a   值小于或等于任何值   已经被使用过。对于MyISAM,如果   该值小于或等于   目前的最大值   AUTO_INCREMENT列,值为   重置为当前最大值加1。   对于InnoDB,如果值小于   当前的最大值   列,没有错误发生和   当前序列值不会改变。

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

答案 1 :(得分:3)

简单回答:你不能这样做。

如果可以,如果您在1开始自动增量并插入1000行会发生什么?由于“重复键” - 错误,无法插入最后一个。

如果你必须有一个预定义的条目,其id永远不会改变且容易记住,为什么不使用0呢?或者,如果你真的需要使用1000,那么让其他列从1001开始会有什么问题?

答案 2 :(得分:1)

假设您没有其他行ID 1000,您可以将行插入表格的底部,然后您只需使用更新命令:

UPDATE  table.column SET id = 1000 WHERE id = current_id;

假设id是您的自动增量列。并且current_id应该替换为插入行的id。

答案 3 :(得分:0)

您可以使用链接到MySQL的MS Access作为外部表,您可以通过Excel中的复制粘贴从MS Access更改自动增量表字段值(首先,您需要在Excel中安排自动增量的值)。

答案 4 :(得分:0)

您可以使用以下语句:

UPDATE tbl SET id=1000 WHERE id=current_id;
ALTER TABLE tbl AUTO_INCREMENT=1001;