MySQL数据库删除数据后自增ID不连续的问题

stevehe 2022年12月24日 135次浏览

问题:

测试项目的时候在表上添了几条数据,测试完成后删除了这些数据,发现下一条新增数据的ID是不连续的,如下图所示:
image.png

解决方法:

删除完还没有新增数据,即还没有出现不连贯的数据ID时,执行以下语句:

ALTER TABLE 表名 AUTO_INCREMENT = 1;

如果已知下一条数据自增的ID(假设是10),可以直接写成ALTER TABLE 表名 AUTO_INCREMENT = 10;这样再插入数据时,自增ID会从10开始,也可以用这个语法来跳过一些编号。此外,如果AUTO_INCREMENT 的值小于ID的最大值,那么ID是从MAX(ID)+1开始自增,所以当AUTO_INCREMENT = 1时,一般默认ID是从最大值加一开始自增的。

表中已经出现不连贯的数据ID时,执行以下语句进行修改

SET @auto_id = 0;
UPDATE 表名 SET 自增字段名 = (@auto_id := @auto_id + 1);
ALTER TABLE 表名 AUTO_INCREMENT = 1;

修改结果如下图所示:
image.png

如果需要清空表的数据的话,最好使用TRUNCATE TABLE 表名来删除,这样新增的数据自增ID会从1开始,如果使用DELETE来删除,新增的数据会沿着之前的ID进行自增。如果使用的数据库管理软件是Navicat,那可以选中表右键选择截断表,其效果和TRUNCATE的效果是一样的。