重新同步MySQL自动增量字段

时间:2011-09-17 09:15:36

标签: mysql auto-increment myisam

我有一个有自动增量列的表,昨晚我犯了一个错误,不小心插入了一些坏行,所以我删除了它们。

不幸的是,这意味着我在自动增量字段中“丢失”了一些ID(我插入了两个好行和三个坏行,ID 315和316很好,但我删除了带有ID的行317,318当重新计数时,它使id为320,所以它跳过我删除的三行。) 我知道这是AI字段所需的功能,但有没有办法可以重置它以便不会跳过这些ID?我读到了删除id字段并重新创建它(我知道这将破坏与其他表的任何关系,我可以手动修复)。

是否可以保证分配给行的新ID与以前相同。例如,在我执行此操作后,行1,2,3,4 ......仍然是行1,2,3,4 ... ... 还有其他办法吗?

3 个答案:

答案 0 :(得分:1)

根据the documentation,您应该可以使用:

ALTER TABLE your_table AUTO_INCREMENT = <your desired value>;

但是,只有当没有 ID高于该值时,这才有效。在您的情况下,由于您声明已经在320(可能在上面)生成了ID,因此您必须删除它们并在之后重新插入它们。

答案 1 :(得分:0)

在您的情况下,下一个查询将完成工作:

ALTER TABLE `table` AUTO_INCREMENT = 1

此下一个auto_increment值将是最高可用(不是2)。如果您有10个,11个,12个,13个ID,然后删除了11,12和13,那么在上面的查询之后,您的下一个auto_increment值将再次为11。

答案 2 :(得分:0)

自动增量字段中存在间隙并不重要,只要没有其他表将这些值用作外键即可。无论如何,这样的字段永远不会显示给用户。

相关问题