自增列
本质
每个表只有一个自增(AUTO_INCREMENT)列,数据库内部会维护一个表级自增计数器。每次插入自动生成下一个唯一值。
因为一个表只有一个自增计数器,因此不允许有两个自增列。
警告
自增列必须是KEY,普通列不能设置为自增列
修改自增列
sql
INSERT INTO test (name) VALUES ('A'), ('B'), ('C');| id | name |
|---|---|
| 1 | A |
| 2 | B |
| 3 | C |
你可以直接用 UPDATE 改自增列:
sql
UPDATE test SET id = 4 WHERE id = 3;| id | name |
|---|---|
| 1 | A |
| 2 | B |
| 4 | C |
计数器不会因为 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');| id | name |
|---|---|
| 1 | A |
| 2 | B |
| 4 | C |
| 5 | D |
自增列操作
- 设置自增列
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;