查自增列当前信息要点
- SHOW TABLE STATUS LIKE '表' 的 Auto_increment 列即下一个值
- information_schema.TABLES 的 AUTO_INCREMENT 字段等价可程序读
- 确认哪列是自增:看 COLUMNS 表 EXTRA 字段含 'auto_increment'
- 下一个自增值已分配就会被占用,即使该插入事务回滚也不回收
- 大表 SHOW TABLE STATUS 也可能给估算,但自增列是精确值
- 程序里取下一自增值别用 MAX(id)+1,并发下不安全
查自增列当前信息示例
SHOW TABLE STATUS LIKE 'orders'\G
SELECT TABLE_NAME, AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'shop';
-- 找出哪些列是自增列
SELECT TABLE_NAME, COLUMN_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'shop'
AND EXTRA LIKE '%auto_increment%';
避坑提醒:事务回滚后 AUTO_INCREMENT 不会回退,所以自增列会出现跳号,这是正常设计;不要误以为是 bug 去修。