文章詳情頁
mysql - INSERT ON DUPLICATE KEY 是如何判斷重復key的?
瀏覽:102日期:2022-06-14 18:52:24
問題描述
使用INSERT的時候 有表T(id,A,B,C,D)
插入的時候希望通過A,B索引唯一記錄 ,有重復的時候更新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:這條語句相當于:
INSERT INTO ... VALUES ...
當INSERT(因為主鍵或唯一鍵沖突)失敗時,執行
UPDATE ... SET ... WHERE A = a AND B = b
只是這個過程用一個原子語句來實現罷了,具體可參閱MySQL的官方文檔: https://dev.mysql.com/doc/ref...
如果表中有多個唯一鍵,情況就更復雜了,有興趣可以深入研究。還有一個類似的語句叫 REPLACE 跟INSERT ... ON DUPLICATE KEY UPDATE作用類似,但原理是不一樣的,有興趣可參閱: https://dev.mysql.com/doc/ref...
相關文章:
1. android - NavigationView 的側滑菜單中如何保存新增項(通過程序添加)2. python - Pycharm一句代碼寫完可以自動補全空格么?3. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)4. python - xpath提取網頁路徑沒問題,但是缺失內容?5. mysql服務無法啟動1067錯誤,誰知道正確的解決方法?6. tp5 不同控制器中的變量調用問題7. 除了 python2 和 python3,ipython notebook 還可以用哪些內核?8. php7.3.4中怎么開啟pdo驅動9. 這段代碼既不提示錯誤也看不到結果,請老師明示錯在哪里,謝謝!10. 老師 我是一個沒有學過php語言的準畢業生 我希望您能幫我一下
排行榜
