【发布时间】:2012-02-28 10:45:41
【问题描述】:
我需要使用特定键设置记录的所有字段的值(键实际上是复合键),如果还没有具有这样键的记录,则插入记录。
REPLACE 似乎是为了完成这项工作,但同时它的手册页建议
INSERT ... ON DUPLICATE KEY UPDATE.
我应该更好地选择它们中的哪一个?为什么?
我想到的REPLACE 的唯一“副作用”是它会增加自动增量值(幸运的是我没有使用任何值),而INSERT ... ON DUPLICATE KEY UPDATE 可能不会。还有哪些实际差异需要考虑?在哪些特定情况下,REPLACE 可以优于 INSERT ... ON DUPLICATE KEY UPDATE,反之亦然?
【问题讨论】:
-
INSERT ... ON DUPLICATE KEY UPDATE 实际上也会增加自动增量计数器。不是针对正在更新的记录,而是针对插入的下一条记录。因此,如果最高 ID 为 10,并且您执行重复插入,然后插入新的唯一值,则该行的 ID 将变为 12。