起始值与步长要点
- 建表时指定起始:CREATE TABLE ... AUTO_INCREMENT=100
- 已建表改起点:ALTER TABLE 表 AUTO_INCREMENT=100
- 步长由 auto_increment_increment 系统变量决定,默认 1
- 偏移量 auto_increment_offset 控制从几开始,配合步长做分片
- 改起点只对'下一行'生效,不会回填已存在的行
- 主从环境步长设不同可让多节点自增不冲突
起始值与步长示例
-- 建表时让自增从 1000 起步
CREATE TABLE voucher (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
code VARCHAR(20),
PRIMARY KEY (id)
) AUTO_INCREMENT = 1000;
-- 中途调整起点
ALTER TABLE voucher AUTO_INCREMENT = 5000;
-- 查看当前步长
SHOW VARIABLES LIKE 'auto_increment%';
避坑提醒:改 AUTO_INCREMENT 设为比当前最大值小的值会被忽略——MySQL 不会回退到已用过的区间,避免和已有主键撞车。