当前位置:网站首页> MySQL如何让一个表中可以有多个自增列
MySQL如何让一个表中可以有多个自增列
2022-06-22 12:40:00 【1024问】
1.手动指定自增值
2.手动修改自增值
3.一个表可以有多个自增列吗?
4.其他注意事项
4.1 自增列只能为整数类型
4.2 必须配合 key 一起使用
总结
前言:
自增列可使用 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,
如下图所示:

当表创建之后,我们也可以通过 alter 命令来修改自增列的值,它的修改命令如下:
alter table table_name auto_increment=n;如果要将 tab_incre 表中的自增值修改为 100,可使用以下 SQL 来实现:

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

一个表中只能有一个自增列,这和一个表只能有一个主键的规则类似,当我们尝试给一个表添加一个自增列时,可以正常添加成功,
如下图所示:

当我们尝试给一个表添加多个自增列时,会提示只能有一个自增列的报错信息,
如下图所示:

除了一个表只能添加一个自增列之外,自增列还需要注意以下两个问题。
4.1 自增列只能为整数类型自增列的字段类型只能为整数类型(TINYINT、SMALLINT、INT、BIGINT 等),
如下图所示:

当我们使用其他类型来作为自增列的数据类型时,会提示如下错误:

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。
到此这篇关于MySQL如何让一个表中可以有多个自增列的文章就介绍到这了,更多相关MySQL表自增列内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
边栏推荐
- “不敢去懷疑代碼,又不得不懷疑代碼”記一次網絡請求超時分析
- 高薪程序员&面试题精讲系列114之Redis缓存你熟悉吗?Redis的key如何设计?内存淘汰机制你熟悉吗?
- 693. Binary Number with Alternating Bits
- Chapter 1 overview of naturallanguageprocessing and deep learning
- 卸载MySQL 8
- Talk about row storage and column storage of database
- 性能相关指标
- Oracle stored procedure 2
- 257. Binary Tree Paths
- 476. Number Complement
猜你喜欢

Query rewriting for opengauss kernel analysis

leetcode 85. Max rectangle

leetcode-背包问题

HMS core news industry solution: let technology add humanistic temperature

别再用 System.currentTimeMillis() 统计耗时了,太 Low,StopWatch 好用到爆!

leetcode-并查集

leetcode-区间dp

Windows下MySQL 8.0.29的详细安装教程,解决找不到VCRUNTIME140_1.dll、plugin caching_sha2_password could not be loaded

HMS Core新闻行业解决方案:让技术加上人文的温度

MySQL中的存储过程
随机推荐
338. Counting Bits
LDA study notes
epoch_ Num and predict_ Conversion of num
Some common SQL (version 05 and above) database maintenance scripts
448. Find All Numbers Disappeared in an Array
If the programmer tells the truth during the interview
Neuron+eKuiper 实现工业物联网数据采集、清理与反控
Writing a contract testing tool from scratch -- database design
SSM based community garbage classification and transportation management system, high-quality graduation thesis example (can be used directly), source code, database script, project introduction and o
12306 ticket grabbing tutorial
毕业论文写作中致谢词的常见写法及优秀范文
论文专利博客写作总结
Word skills summary
leetcode 854. String with similarity K
聊一聊数据库的行存与列存
My suggestions on SAP ABAP transformation
155. Min Stack
史蒂芬·柯维写给年轻人的高效工作秘笈
Testing methodology - data driven testing
Using Sqlalchemy for combined paging queries