插入數據時的主鍵沖突
-- 插入測試表
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)`