drop table rm_ic.test_replace;
create table rm_ic.test_replace(id int(11) auto_increment primary key,name varchar(100) ,uid varchar(100) comment '身份證' unique key
)
;
insert into rm_ic.test_replace
values(1,'張三','111'),(2,'李四','222'),(3,'王五','333'),(4,'趙六','444');
1.pk和uk同時命中 且pk和uk在同一條記錄
rm_ic> replace into rm_ic.test_replace values (1,'張三','111')
[2025-06-23 18:22:16] 2 rows affected in 24 ms --delete id=1 insert id=1
數據沒有任何變化
?2.只命中pk
rm_ic> replace into rm_ic.test_replace values (1,'張三new','113')
[2025-06-23 18:24:59] 2 rows affected in 23 ms
先delete id=1 然后insert id=1
3.只命中uk
rm_ic> replace into rm_ic.test_replace(name, uid) values ('張三newnew','113')
[2025-06-23 18:27:25] 2 rows affected in 25 ms
先delete id=1 然后insert id=6?
1.pk和uk同時命中 且pk和uk不在同一條記錄
rm_ic> replace into rm_ic.test_replace values (3,'王五趙六','444')
[2025-06-23 18:29:05] 3 rows affected in 24 ms
同時命中id=3王五 uid=444趙六
delete id=3? delete uid=444 insert id=3? 此處就要注意了。