MySQL ON DUPLICATE KEY UPDATE 可以在做 Insert 操作时,如果记录存在,则变为更新记录,但存在一个问题:如果记录存在时,会消耗一个自增id.例如:
表[testtb]中存在如下记录, id为自增主键, id2为unique
id,id2 name
1, a, ff
2, b, cc
在执行完以下语句后Insert into testtb (id2, name) values(b, 'bb') ON DUPLICATE KEY UPDATE name='bb'
Insert into testtb (id2, name) values(c, 'nn') ON DUPLICATE KEY UPDATE name='nn'
表中数据变为:
id, id2, name
1, a, ff
2, b, bb
4, c, nn
id=3 的键值被第一次执行的语句浪费了。