文章詳情頁
mysql - INSERT ON DUPLICATE KEY 是如何判斷重復(fù)key的?
瀏覽:193日期: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. macos - 無法source activate python272. javascript - 微信網(wǎng)頁開發(fā)從菜單進入頁面后,按返回鍵沒有關(guān)閉瀏覽器而是刷新當(dāng)前頁面,求解決?3. 預(yù)訂金和尾款分別支付4. javascript - h5微信中怎么禁止橫屏5. empty比isset更嚴格一點6. 運行python程序時出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯誤?7. 我在導(dǎo)入模板資源時遇到無法顯示的問題,請老師解答下8. PHPExcel表格導(dǎo)入數(shù)據(jù)庫怎么導(dǎo)入9. thinkphp6使用驗證器 信息如何輸出到前端頁面10. python - sqlalchemy更新數(shù)據(jù)報錯
排行榜

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