Skip to content

自增列

本质

每个表只有一个自增(AUTO_INCREMENT)列,数据库内部会维护一个表级自增计数器。每次插入自动生成下一个唯一值。

因为一个表只有一个自增计数器,因此不允许有两个自增列。

警告

自增列必须是KEY,普通列不能设置为自增列

修改自增列

sql
INSERT INTO test (name) VALUES ('A'), ('B'), ('C');
idname
1A
2B
3C

你可以直接用 UPDATE 改自增列:

sql
UPDATE test SET id = 4 WHERE id = 3;
idname
1A
2B
4C

计数器不会因为 UPDATE 改值而修改。因此插入下一条时:

sql
INSERT INTO test (name) VALUES ('D');

尝试插入 id=4冲突,因为表中已有 id=4

修改计数器

可以手动修改计算器的值,计数器的值就是下一条记录新增时的id

sql
ALTER TABLE test AUTO_INCREMENT = 5;
sql
INSERT INTO test (name) VALUES ('D');
idname
1A
2B
4C
5D

自增列操作

  • 设置自增列
sql
ALTER TABLE test MODIFY id INT NOT NULL AUTO_INCREMENT;
  • 设置计数器值
sql
ALTER TABLE test AUTO_INCREMENT = 5;
  • 删除自增
sql
ALTER TABLE test MODIFY id INT NOT NULL;