2020-01-16 控制MYSQL的自增长序列的起始值

2020-01-16 控制MYSQL的自增长序列的起始值,第1张

一、修改自增长序列的值

alter table table_name auto_increment=n

注意:n只能大于已有的auto_increment的整数值,小于的值无效.

show table status like 'table_name' 的返回结果里的auto_increment列就是表的现有值.

二、控制主键的起点

create table 表名

(

......

) engine=INNODB auto_increment=1001 default charset=gbk

三、自增主键归零

如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数

truncate table 表名

四、获取自增主键

通过SQL select LAST_INSERT_ID()函数

通过SQL @@IDENTITY 变量

五、说明

AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。

AUTO_INCREMENT数据列必须具备NOT NULL属性。

设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。

日常开发中经常遇到AUTO_INCREMENT类型自增ID值不符合预期的情况,本经验为大家总结如何修改自增ID的初始值。

方法/步骤

创建表时设置递增ID:

create table users (pkid int auto_increment primary key,...)

2

表创建完成后设置递增ID:

alter table users add pkid int auto_increment primary key

注意:自增字段,一定要设置为primary key.

3

很多时候不希望pkId从1开始,我们可能希望他从10000开始:

alter table users AUTO_INCREMENT=10000

4

你也可以修改现有的递增值, 比如大批量删除数据后,想id从654321退回123456开始:

alter table users AUTO_INCREMENT=123456

1、清空表,恢复到初始值:

2、修改为任意值:

上述语句中,table_name为表名,15为要修改的值,这样下次插入的数据的自增列的值就是15。

若修改的值与现有数据冲突,会自动修改为当前最大值+1。

如图所示,修改自增列id为11,虽然显示修改成功,但是id=11已经是现有值,再插入时会自动把自增列的值变为当前最大值(14)加1,也就是15


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6098450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存