一个表中可以有多个自增列吗?¶
一、自增列简介¶
自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后:
- 如果添加时不设置任何值,系统会自动填充自增值
- 如果设置 NULL 值,也会使用自增规则填充
默认规则: - 默认起始值:1 - 每次递增量:1
示例SQL:
CREATE TABLE tab_incre(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(250) NOT NULL
);
二、手动指定自增值¶
在创建表时可以手动指定自增值:
CREATE TABLE tab_incre(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(250) NOT NULL
) AUTO_INCREMENT=50;
查看自增值:
SHOW CREATE TABLE table_name;
三、手动修改自增值¶
表创建后,可以通过 ALTER 命令修改自增列的值:
ALTER TABLE table_name AUTO_INCREMENT=n;
注意:如果设置的自增值小于当前自增列中的最大值,自增值会自动变为最大值+1。
四、一个表可以有多个自增列吗?¶
答案:一个表中只能有一个自增列。
这与"一个表只能有一个主键"的规则类似。
- 添加一个自增列:✅ 成功
- 添加多个自增列:❌ 报错
五、其他注意事项¶
5.1 自增列只能为整数类型¶
自增列的字段类型只能是整数类型: - TINYINT - SMALLINT - INT - BIGINT
使用其他类型会报错。
5.2 必须配合 key 一起使用¶
auto_increment 必须配合 key 一起使用:
- 必须是 primary key(主键)
- 或者是 foreign key(外键)
- 也可以配合唯一约束 unique 使用
示例:
-- 主键配合自增
CREATE TABLE t1 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
-- 唯一约束配合自增
CREATE TABLE t2 (
id INT UNIQUE AUTO_INCREMENT,
name VARCHAR(50)
);
总结¶
| 规则 | 说明 |
|---|---|
| 自增列数量 | 一个表只能有一个自增列 |
| 数据类型 | 必须是整数类型(TINYINT/SMALLINT/INT/BIGINT) |
| 配合要求 | 必须配合 key(主键/外键/唯一约束)使用 |
| 默认起始值 | 1 |
| 默认递增量 | 1 |