MySQL 之 INSERT INTO… ON DUPLICATE KEY UPDATE

INSERT INTO… ON DUPLICATE KEY UPDATE 批量更新

on duplicate key update 只是執行了update後面的語句。

如果表包含AUTO_INCREMENT列並INSERT ... ON DUPLICATE KEY UPDATE插入或更新行,則該LAST_INSERT_ID()函數返回該AUTO_INCREMENT值。

 

同類語句比較:

replace into  和 insert into on duplicate key update的不同在於:
a. replace into 操作本質是對重複的記錄先delete 後insert,如果更新的字段不全會將缺失的字段置爲缺省值,用這個要悠着點否則不小心清空大量數據可不是鬧着玩的。
b. insert into 則是隻update重複記錄,不會改變其它字段。

 

官方說明:https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

警告:通常,您應該儘量避免ON DUPLICATE KEY UPDATE 在具有多個唯一索引的表上使用子句

 

解決辦法:

1、儘量不對存在多個唯一鍵的table使用該語句

2、在有可能有併發事務執行的insert 的內容一樣情況下不使用該語句

 

相關文章:

https://blog.csdn.net/Michaelwubo/article/details/80930468

https://blog.csdn.net/qq2430/article/details/80511640

https://www.cnblogs.com/PatrickLiu/p/6385167.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章