如何重置字段的AUTO_INCREMENT?

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


当前回答

要更新到最新的加号id,请执行以下操作:

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

编辑:

SET @latestId = SELECT MAX(id) FROM table_name;
SET @nextId = @latestId + 1;
ALTER TABLE table_name AUTO_INCREMENT = @nextId;

未测试,请在运行前测试*

其他回答

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

从MySQL 5.6开始,您可以在InnoDB中使用简单的ALTERTABLE:

ALTER TABLE tablename AUTO_INCREMENT = 1;

更新文件以反映这一点:

13.1.7 ALTER TABLE语句

我的测试还显示该表未被复制。只需更改值即可。

表格的自动递增计数器可以通过两种方式设置:

通过执行查询,就像其他人已经解释过的那样:ALTER TABLE<TABLE_name>AUTO_INCREMENT=<TABLE_id>;使用Workbench或其他可视化数据库设计工具。我将在Workbench中展示它是如何实现的,但在其他工具中也应该不会有太大不同。右键单击所需的表格,然后从上下文菜单中选择Alter table。在底部,您可以看到更改表格的所有可用选项。选择“选项”,您将获得此表单:

然后,只需在自动增量字段中设置所需的值,如图所示。这将基本上执行第一个选项中显示的查询。

要更新到最新的加号id,请执行以下操作:

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

编辑:

SET @latestId = SELECT MAX(id) FROM table_name;
SET @nextId = @latestId + 1;
ALTER TABLE table_name AUTO_INCREMENT = @nextId;

未测试,请在运行前测试*

最适合我的解决方案:

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一起工作,我不需要知道当前的最大值!

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