我需要的是使用特定键(实际上是复合键)设置记录的所有字段的值,如果还没有使用该键的记录,则插入记录。
REPLACE似乎可以完成这项工作,但与此同时,其手册页也显示 INSERT ... ON DUPLICATE KEY UPDATE。
我最好选择其中哪些?为什么?
REPLACE我想到的唯一“副作用” 是它会增加自动增量值(幸运的是我不使用任何值),而INSERT ... ON DUPLICATE KEY UPDATE可能不会。还有其他需要注意的实际差异吗?在哪些特定情况下可以REPLACE优先选择INSERT ... ON DUPLICATE KEY UPDATE,反之亦然?
REPLACE内部执行删除操作,然后执行插入操作。如果您有指向该行的外键约束,则可能会导致问题。在这种情况下,REPLACE可能会失败甚至更糟:如果将外键设置为级联删除,REPLACE则将导致其他表中的行被删除。即使在REPLACE操作前后都满足约束条件,也会发生这种情况。
使用INSERT ... ON DUPLICATE KEY UPDATE避免了这个问题,因此是首选。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。