MySQL Insert 注意事项
Create Table
|
Insert Into
|
普通 insert into
当主键或唯一索引冲突时,MySQL 会异常报错中断执行。
|
虽然插入失败,但占用了一次 id+1 机会,即把 id=4 使用了,下次 id 从 5 开始。
TODO: 待确认 master-slave 集群时,slave 库中表的 AUTO_INCREMENT
值与 master 相同
Replace Into (禁用)
replace into
操作时,当主键或唯一索引冲突时就是普通的 insert into
效果。
但是,当有主键或唯一索引冲突时,会删除冲突行,重新插入,从而 id
自动 +1
.
|
若配置了主从同步,则此时 slave 库中 tbl_insert_ignore_replace_duplicate 表的 AUTO_INCREMENT = 4。
当 master 库压力过大或其他情况,需要把 slave 库转为 master 库时,造成 id 在 4-6 区间的数据无法同步到旧 master 库(出现 duplicate key error)
TODO: 待实践确认
Insert Ignore Into
|
On Duplicate Key Update
|