實際業務使用中,有時候會遇到插入數據庫,但是如果某個屬性(比如:主鍵)存在,就做更新。通常有兩種方式: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,否則會把其他列原有的值給刪除掉了。