当前位置:网站首页>已解决:一個錶中可以有多個自增列嗎
已解决:一個錶中可以有多個自增列嗎
2022-06-22 20:49: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。
边栏推荐
- 支持在 Kubernetes 运行,添加多种连接器,SeaTunnel 2.1.2 版本正式发布!
- 一张图解码 OpenCloudOS 社区开放日
- 一文搞懂 MySQL 中 like 的索引情况
- [observation] innovation in the software industry has entered a "new cycle". How can we make a new start in the changing situation?
- MySQL高级(二)
- Dynamicdatabasesource, which supports the master-slave database on the application side
- 智能计算之神经网络(Hopfield网络-DHNN,CHNN )介绍
- 79-不要看到有order by xxx desc就创建desc降序索引-文末有赠书福利
- Multi transactions in redis
- 【Proteus仿真】NE555延时电路
猜你喜欢

what? You can't be separated by wechat

An IPFs enabled email - skiff

一张图解码 OpenCloudOS 社区开放日

Security policy and NAT (easy IP) of firewall Foundation

Understand the index of like in MySQL

播放增长900w,B站用户叫好叫座的恰饭总结

一个支持IPFS的电子邮件——SKIFF

科技云报道:东数西算不止于“算”,更需“新存储”

Emotion analysis with RNN & CNN pytorch
Gradle Build Cache引发的Task缓存编译问题
随机推荐
[deeply understand tcapulusdb technology] create a game area for document acceptance
三维天地助力实验室夯实完整质量体系管理
client-go gin的简单整合十一-Delete
72-最近一次现场生产系统优化的成果与开发建议
直播预报|中国信息协会网信大讲堂第六期将于6月24日开播啦
软件测试——测试用例设计&测试分类详解
The road to systematic construction of geek planet business monitoring and alarm system
市场开始降温,对NFT 是坏事么?
Classic interview question: a page from entering URL to rendering process
ZABBIX learning notes (37)
【Proteus仿真】三极管组成的H桥驱动直流电机+按键正反转控制
How to consider the arrangement of complete knapsack
深度学习常用损失函数总览:基本形式、原理、特点
Summary of 2019: 31 is just another start
mysql8.0忘记密码的详细解决方法
元宇宙中的云计算,提升你的数字体验
R语言midwest数据集可视化
Raspberry pie environment settings
86-给参加<SQL写法与改写培训>的学员补充一个二手案例
Ribbon load balancing