关于 MySQL ON DUPLICATE KEY UPDATE

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 的键值被第一次执行的语句浪费了。

    原文作者:fly1029
    原文地址: https://segmentfault.com/a/1190000008908024
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞