开发者社区> 问答> 正文

MySQL中的“ REPLACE”和“ INSERT…ON DUPLICATE KEY?mysql

我需要的是使用特定键(实际上是复合键)设置记录的所有字段的值,如果还没有使用该键的记录,则插入记录。

REPLACE似乎可以完成这项工作,但与此同时,其手册页也显示 INSERT ... ON DUPLICATE KEY UPDATE。

我最好选择其中哪些?为什么?

REPLACE我想到的唯一“副作用” 是它会增加自动增量值(幸运的是我不使用任何值),而INSERT ... ON DUPLICATE KEY UPDATE可能不会。还有其他需要注意的实际差异吗?在哪些特定情况下可以REPLACE优先选择INSERT ... ON DUPLICATE KEY UPDATE,反之亦然?

展开
收起
保持可爱mmm 2020-05-17 19:22:47 551 0
1 条回答
写回答
取消 提交回答
  • REPLACE内部执行删除操作,然后执行插入操作。如果您有指向该行的外键约束,则可能会导致问题。在这种情况下,REPLACE可能会失败甚至更糟:如果将外键设置为级联删除,REPLACE则将导致其他表中的行被删除。即使在REPLACE操作前后都满足约束条件,也会发生这种情况。

    使用INSERT ... ON DUPLICATE KEY UPDATE避免了这个问题,因此是首选。来源:stack overflow

    2020-05-17 19:31:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像