问题:
测试项目的时候在表上添了几条数据,测试完成后删除了这些数据,发现下一条新增数据的ID是不连续的,如下图所示:
解决方法:
删除完还没有新增数据,即还没有出现不连贯的数据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;
修改结果如下图所示:
如果需要清空表的数据的话,最好使用
TRUNCATE TABLE
表名来删除,这样新增的数据自增ID会从1开始,如果使用DELETE来删除,新增的数据会沿着之前的ID进行自增。如果使用的数据库管理软件是Navicat,那可以选中表右键选择截断表,其效果和TRUNCAT
E的效果是一样的。