久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:142日期: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...

相關文章:
主站蜘蛛池模板: 孝感市| 临夏市| 奎屯市| 漠河县| 慈溪市| 宁城县| 普兰店市| 神池县| 静安区| 临潭县| 余姚市| 西藏| 泰安市| 四子王旗| 青川县| 赤城县| 蚌埠市| 酒泉市| 孝义市| 剑阁县| 彝良县| 库尔勒市| 鄂伦春自治旗| 长岛县| 平南县| 四会市| 尚志市| 诸暨市| 武义县| 平乡县| 长治市| 斗六市| 高尔夫| 吴桥县| 营山县| 新巴尔虎右旗| 穆棱市| 拉萨市| 台前县| 秦皇岛市| 博罗县|