我有一个带有自动递增列的表。我需要将其中一行设置为1000而不再触摸它,但现在我已将其设置为1000,自动增量始终保持在1001并且拒绝从1开始。有没有办法解决这个问题? / p>
答案 0 :(得分:7)
你不能:
要更改的值 AUTO_INCREMENT计数器用于 新行,执行此操作:
ALTER TABLE t2 AUTO_INCREMENT = value;
您无法将计数器重置为a 值小于或等于任何值 已经被使用过。对于MyISAM,如果 该值小于或等于 目前的最大值 AUTO_INCREMENT列,值为 重置为当前最大值加1。 对于InnoDB,如果值小于 当前的最大值 列,没有错误发生和 当前序列值不会改变。
答案 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;