成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - INSERT ON DUPLICATE KEY 是如何判斷重復(fù)key的?

瀏覽:125日期:2022-06-14 18:52:24

問題描述

使用INSERT的時(shí)候 有表T(id,A,B,C,D)

插入的時(shí)候希望通過A,B索引唯一記錄 ,有重復(fù)的時(shí)候更新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(因?yàn)橹麈I或唯一鍵沖突)失敗時(shí),執(zhí)行

UPDATE ... SET ... WHERE A = a AND B = b

只是這個(gè)過程用一個(gè)原子語句來實(shí)現(xiàn)罷了,具體可參閱MySQL的官方文檔: https://dev.mysql.com/doc/ref...

如果表中有多個(gè)唯一鍵,情況就更復(fù)雜了,有興趣可以深入研究。還有一個(gè)類似的語句叫 REPLACE 跟INSERT ... ON DUPLICATE KEY UPDATE作用類似,但原理是不一樣的,有興趣可參閱: https://dev.mysql.com/doc/ref...

相關(guān)文章: