插入数据时的主键冲突
-- 插入测试表
mysql> create table stu(
-> id char(4) primary key,
-> name varchar(20)
-> )engine=innodb;
# `Query OK, 0 rows affected (0.06 sec)`
-- 插入测试数据
mysql> insert into stu values ('s001','tom');
# `Query OK, 1 row affected (0.00 sec)`
-- 原理:如果插入的主键不重复就直接插入,如果主键重复就替换(删除原来的记录,插入新记录)
mysql> replace into stu values('s002','ketty');
# `Query OK, 2 rows affected (0.00 sec)`
on duplicate key update
- 当插入的值与主键或唯一键有冲突执行update操作
-- 插入的数据和主键或唯一键起冲突,将s002的name字段改为‘李白’
mysql> insert into stu values ('s002','李白') on duplicate key update name='李白';
# `Query OK, 2 rows affected (0.00 sec)`