在使用SQL語句進行數據表插入insert操作時,如果表中定義了主鍵,插入具有相同主鍵的記錄會報錯:
Error Code: 1062. Duplicate entry 'XXXXX' for key 'PRIMARY'(主鍵沖突)
這樣我們只好檢查主鍵是不是存在,若存在則更新,若不存在則插入。或者寫SQL流程控制語句(if...else...)
Mysql提供了replace into跟insert into的功能一樣。不同點在於:
如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。否則,直接插入新數據。
注意:因為要根據主鍵或者是唯一索引判斷是否有重復數據,所以操作的表必須要有主鍵或者是唯一索引。否則的話,replace into 會直接插入數據。
Mysql replace into用法有三種,最簡單的一種用法就是直接將 "insert" 關鍵字替換為"replace"就可以啦。
insert into t(... , ...) values(... , ...)
修改為
replace into t(... , ...) values(... , ...)
