MySQL如何设置自增主键起始值为1且步长为3?
MySQL中设置AUTO_INCREMENT的起始值与递增步长
如果你需要让表的AUTO_INCREMENT主键从1开始、每次递增3,仅用ALTER TABLE tbl AUTO_INCREMENT = 1;只能指定起始值,无法改变默认的递增步长(默认是1),这和SQL Server里IDENTITY(1,3)的写法逻辑不同,下面是具体的解决方法:
临时生效的设置(仅当前会话)
如果只需要在当前数据库连接中生效,执行以下SQL命令:
SET @@auto_increment_increment = 3;
之后再设置起始值(如果表还没数据,或者需要重置起始值):
ALTER TABLE tbl AUTO_INCREMENT = 1;
这种设置在断开连接或重启MySQL后会恢复默认值。
永久生效的设置(全局所有表)
要让步长设置永久生效,需要修改MySQL的配置文件(Linux下通常是/etc/my.cnf,Windows下是my.ini),在[mysqld]段添加或修改:
auto_increment_increment = 3
保存配置后重启MySQL服务,再执行起始值设置:
ALTER TABLE tbl AUTO_INCREMENT = 1;
注意点
- 全局的步长设置会影响所有使用AUTO_INCREMENT的表,若只想针对单个表调整,只能用临时会话的方式,但要注意会话结束后设置失效。
- 如果表中已有数据,设置起始值时必须保证该值大于当前主键列的最大值,否则会出现主键冲突错误。
内容的提问来源于stack exchange,提问作者conner.mcvay
相关产品推荐
相关产品推荐

