跳转至

一个表中可以有多个自增列吗?

一、自增列简介

自增列可使用 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

评论