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 此处就要注意了。