«

MySQL自增ID重置

时间:2026-10-19 07:17     作者:emer     分类: 无


MySQL自增ID重置

引言

测试表删完数据后,下一条插入的自增ID还接着上次的数往上跳,演示或本地开发时想让ID从1重新开始,就要重置AUTO_INCREMENT。DELETE清空不会归零,这是新手最容易踩的坑。

DELETE不会重置自增

DELETE FROM users;
INSERT INTO users(name) VALUES('张三');
-- 新行ID仍然接着旧最大值递增,不从1开始

DELETE只删行,自增计数器保留在内存和表结构里,不受影响。

TRUNCATE直接归零

TRUNCATE TABLE users;

TRUNCATE相当于重建空表,自增计数清零、表结构保留,速度远快于全表DELETE,但会清空全部数据且不可回滚,谨慎使用。

只改起始值不清数据

表里还有数据时,把自增起点设为当前最大值+1:

ALTER TABLE users AUTO_INCREMENT = 1;

若表内已有大于1的数据,MySQL会自动取max(id)+1作为真实起点,不会产生主键冲突。

查看当前自增值

SHOW TABLE STATUS LIKE 'users';
-- 或
SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_NAME='users';

注意事项

总结

DELETE不清零自增,TRUNCATE才归零重建表;保留数据用ALTER TABLE ... AUTO_INCREMENT=1设起点,查当前值用SHOW TABLE STATUS。开发演示可重置,生产环境优先只调起点、避免TRUNCATE误删。

标签: MySQL 数据库 truncate AUTO_INCREMENT 自增id