如何重置字段的AUTO_INCREMENT?

我希望它再次从1开始计数。


当前回答

尝试运行此查询:

 ALTER TABLE tablename AUTO_INCREMENT = value;

或尝试此查询以重置自动增量

 ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL;

并设置自动增量,然后运行以下查询:

  ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;

其他回答

我建议您转到查询浏览器并执行以下操作:

转到schemata并找到要更改的表。右键单击并选择复制创建语句。打开一个结果选项卡并粘贴create语句。转到create语句的最后一行,查找Auto_Increment=N,(其中N是自动增量字段的当前编号。)将N替换为1。按Ctrl+Enter键。

在表中输入新行后,Auto_increment应重置为1。

我不知道如果您尝试在auto_increment字段值已经存在的地方添加一行,会发生什么。

尝试运行此查询:

 ALTER TABLE tablename AUTO_INCREMENT = value;

或尝试此查询以重置自动增量

 ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL;

并设置自动增量,然后运行以下查询:

  ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;

就像这样:

ALTER TABLE tablename AUTO_INCREMENT = value;

参考:13.1.9 ALTER TABLE语句

SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;

最适合我的解决方案:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

它很快,与InnoDB一起工作,我不需要知道当前的最大值!

这边自动递增计数器将复位,并将从存在的最大值自动启动。