当前位置:网站首页>已解决:一个表中可以有多个自增列吗
已解决:一个表中可以有多个自增列吗
2022-06-22 19:25:00 【菜鸟是大神】
自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列。
PS:本文以下内容基于 MySQL InnoDB 数据库引擎。
默认情况下自增列的值为 1,每次递增 1,比如以下建表 SQL:
create table tab_incre(
id int primary key auto_increment,
name varchar(250) not null
);

我们在添加时,不给自增列 id 设置任何值,它的执行结果如下:
从上述结果可以看出自增列默认值为 1,每次递增 1。
1.手动指定自增值
在创建表的时候可以手动指定自增值,如果不指定自增值,那么它默认会使用 1 作为自增值,手动指定自增值的 SQL 命令如下:
create table tab_incre(
id int primary key auto_increment,
name varchar(250) not null
) auto_increment=50;

使用“show create table table_name”可以查看表中自增列的自增列值,如下图所示:此表的自增值为 50,我们也可以创建一条数据来验证一下自增值是否为 50,如下图所示:![]()
2.手动修改自增值
当表创建之后,我们也可以通过 alter 命令来修改自增列的值,它的修改命令如下:
alter table table_name auto_increment=n;
如果要将 tab_incre 表中的自增值修改为 100,可使用以下 SQL 来实现:

注意事项
当我们试图将自增值设置为比自增列中的最大值还要小的值的时候,自增值会自动变为自增列的最大值 +1 的值,如下图所示:

3.一个表可以有多个自增列吗?
当我们尝试给一个表添加多个自增列时,会提示只能有一个自增列的报错信息,如下图所示:![]()
4.其他注意事项
除了一个表只能添加一个自增列之外,自增列还需要注意以下两个问题。
4.1 自增列只能为整数类型
自增列的字段类型只能为整数类型(TINYINT、SMALLINT、INT、BIGINT 等),如下图所示:
当我们使用其他类型来作为自增列的数据类型时,会提示如下错误:

4.2 必须配合 key 一起使用
auto_increment 必须配合 key 一起使用,这个 key 可以是 primary key 或 foreign key,如果没有 key 就会报错,如下所示:

PS:auto_increment 也可以配合唯一约束 unique 一起使用。
总结
自增列的值默认是 1,每次递增 1,但也可以在创建表的时候手动指定自增值,当然在特殊情况下我们在表被创建之后,也可以通过 alter 修改自增值。一个表中只能有一个自增列,就像一个表中只能有一个主键一样,如果设置多个自增列,那么 SQL 执行就会报错。除此之外还要注意自增列应该为整数类型,且 auto_increment 需要配合 key 一起使用,这个 key 可以是 primary key 或 foreign key。
边栏推荐
- 采用QTest进行数据集测试-性能测试-GUI测试
- The road to systematic construction of geek planet business monitoring and alarm system
- 智能計算之神經網絡(BP)介紹
- Nestjs 集成 config module 与 nacos 实现配置化统一
- 密码学系列之:PKI的证书格式表示X.509
- It supports running in kubernetes, adds multiple connectors, and seatunnel version 2.1.2 is officially released!
- 底部菜单添加的链接无法跳转到二级页面的问题
- R语言organdata 数据集可视化
- 深度学习常用损失函数总览:基本形式、原理、特点
- NFT 中可能存在的安全漏洞
猜你喜欢

Easydss problem and solution summary

【Proteus仿真】74LS138译码器流水灯

Introduction of neural networks for Intelligent Computing (Hopfield network DHNN, CHNN)

防火墙基础之安全策略和NAT(Easy IP)

讲真,Kotlin 协程的挂起没那么神秘(原理篇)

采用QTest进行数据集测试-性能测试-GUI测试

The road to systematic construction of geek planet business monitoring and alarm system

R语言AirPassengers数据集可视化

Three dimensional world helps the laboratory to consolidate the complete quality system management

Oh, my God, it's a counter attack by eight part essay
随机推荐
[deeply understand tcapulusdb technology] create a game zone
一文搞懂 MySQL 中 like 的索引情况
Which securities firm is better to choose for opening an account in flush? Is it safe to open a mobile account?
阿里云视频点播播放出错,控制台访问出现code:4400
真正的缓存之王Caffine Cache
ROS从入门到精通(八) 常用传感器与消息数据
An IPFs enabled email - skiff
树莓派环境设置
The road to systematic construction of geek planet business monitoring and alarm system
Emotion analysis with RNN & CNN pytorch
MySQL Basics - functions
86-给参加<SQL写法与改写培训>的学员补充一个二手案例
[deeply understand tcapulusdb technology] create a game area for document acceptance
Gradle Build Cache引发的Task缓存编译问题
One picture decoding opencloudos community open day
Cloud computing in the metauniverse to enhance your digital experience
采用QTest进行数据集测试-性能测试-GUI测试
手把手教你IDEA创建SSM项目结构
【Proteus仿真】三极管组成的H桥驱动直流电机+按键正反转控制
软件压力测试有哪些方法,如何选择软件压力测试机构?