文章詳情頁
mysql - INSERT ON DUPLICATE KEY 是如何判斷重復(fù)key的?
瀏覽:227日期:2022-06-14 18:52:24
問題描述
使用INSERT的時候 有表T(id,A,B,C,D)
插入的時候希望通過A,B索引唯一記錄 ,有重復(fù)的時候更新C,D
INSERT INTO T(A,B,C,D) VALUES (a,b,c,d) ON DUPLICATE KEY UPDATE C=C+1,D=d 居然是可用的
INSERT 和UPDATE都是正常的
只是不知道有沒有其他問題
所以 MySQL到底是如何判斷DUPLICATE KEY的?
問題解答
回答1:這條語句相當(dāng)于:
INSERT INTO ... VALUES ...
當(dāng)INSERT(因為主鍵或唯一鍵沖突)失敗時,執(zhí)行
UPDATE ... SET ... WHERE A = a AND B = b
只是這個過程用一個原子語句來實現(xiàn)罷了,具體可參閱MySQL的官方文檔: https://dev.mysql.com/doc/ref...
如果表中有多個唯一鍵,情況就更復(fù)雜了,有興趣可以深入研究。還有一個類似的語句叫 REPLACE 跟INSERT ... ON DUPLICATE KEY UPDATE作用類似,但原理是不一樣的,有興趣可參閱: https://dev.mysql.com/doc/ref...
相關(guān)文章:
1. mac里的docker如何命令行開啟呢?2. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””3. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?4. 關(guān)于docker下的nginx壓力測試5. docker容器呢SSH為什么連不通呢?6. nignx - docker內(nèi)nginx 80端口被占用7. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?8. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個是怎么回事????9. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。10. docker start -a dockername 老是卡住,什么情況?
排行榜

熱門標(biāo)簽
網(wǎng)公網(wǎng)安備