MySQL主键自增值为什么有“空洞”?
- 1.场景准备
- 2.开始测试
- 3.问题分析
- 4.问题拓展
本文在测试 insert
、insert ignore
、replace into
三种数据插入方式的时候,发现插入数据的时候在表内存在带有“唯一特性”的值重复的情况下三种语句的处理方式。最终发现了MySQL主键自增值“空洞”了
1.场景准备
测试场景为MySQL 8.0:
- 主键重复场景
- 唯一键重复场景
1、建表,包含主键及唯一约束
CREATE TABLE t1( id int(11) NOT NULL auto_increment, c1 varchar(64) DEFAULT NULL, c2 int(11) DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_c1 (c1)) ENGINE=InnoDB DEFAULT CHARSET=utf8;