mysql使用replace和on duplicate key update区别

        实际业务使用中,有时候会遇到插入数据库,但是如果某个属性(比如:主键)存在,就做更新。通常有两种方式:1、replace into  2、on duplicate key update

但是在使用过程中,发现了两者的区别,整理如下:

replace into :首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

                                         replace into tbl_name(col_name, ...) values(...)

on duplicate key update:当发生重复值的时候,就执行UPDATE后面的代码

       insert into dh_dead_letter(id,topic_code,content) values('2','topic_code','topic_code') on duplicate key update topic_code = values(topic_code), content = values(content);

 

       实际业务场景: 当数据交换任务,进行数据库插入数据时,如果配置的映射列,不是所有映射列,则要使用on duplicate key update只更新或插入部分列的数据,不能使用replace into,否则会把其他列原有的值给删除掉了。

     

原文地址:https://www.cnblogs.com/ningJJ/p/10973004.html