我需要的是设置一个记录的所有字段的值与一个特定的键(键实际上是复合),插入记录如果没有这样的记录的记录呢。在MySQL中`REPLACE`和`INSERT ... ON DUPLICATE KEY UPDATE`之间的实际区别是什么?
REPLACE
似乎是为了完成这项工作,但同时它的手册页建议 INSERT ... ON DUPLICATE KEY UPDATE
。
他们中的哪些人应该更好地选择,为什么?
我想到的REPLACE
唯一的“副作用”是它会增加自动增量值(幸运的是我没有使用任何值),而INSERT ... ON DUPLICATE KEY UPDATE
可能不会。需要考虑哪些其他实际差异?在什么特定情况下,REPLACE
优于INSERT ... ON DUPLICATE KEY UPDATE
,反之亦然?
INSERT ...对重复密钥更新事实上确实也增加了自动增量计数器。不是为了更新记录,而是为了插入下一条记录。因此,如果最高ID为10,并且您做了重复插入,然后插入新的唯一值,那么该行的ID将变为12. – marlar 2015-09-18 21:31:52