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