
测试表结构
新建一个test表,字段有ID,mobile,count,create_time,update_time 当我们执行insert插入数据时会提示Affected rows: 3, Time: 0.094000s,同样数据再次执行会提示1062 - Duplicate entry '1' for key 'PRIMARY', Time: 0.133000s
insert into test (id,mobile,count,create_time)
values
(1,'18888880000',1,1595555555),
(2,'18888880001',2,1595555555),
(3,'18888880002',3,1595555555);
Mysql提示主键冲突,可不可以改变一下思路,当插入已存在主键的记录时,将插入操作变为修改?
insert into test (id,mobile,count,create_time)
values
(1,'18888880000',1,1595555555),
(2,'18888880001',2,1595555555),
(3,'18888880002',3,1595555555)
on duplicate key update count =count + values(count),update_time = values(create_time);
执行完毕提示:Affected rows: 6, Time: 0.326000s,影响了6行,实际是插入变成更新,更新了已存在的3条记录的count和update_time字段值。
当执行的插入的数据不存在则插入(影响1行记录),存在则为更新(影响2行记录),存在记录和更新记录相同则不更新(影响0行记录)。
网友评论