测试表结构
新建一个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行记录)。
网友评论