文章详情页
mysql - INSERT ON DUPLICATE KEY 是如何判断重复key的?
浏览:120日期: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. java固定键值转换,使用枚举实现字典?2. javascript - 移动端开发 H5 页面在 iOS手机上无法实现 长按复制文本 求解决3. 如何解决tp6在zend中无代码提示4. java - HTTPS双向认证基础上有无必要再进行加签验签?5. python - flask学习,user_syy添加报role is invalid keyword for User.6. vim - win10无法打开markdown编辑器7. java - 读写锁中 写锁的降级问题8. javascript - 有没有类似高铁管家的时间选择插件9. html - 如何使用用户输入的数据去运行一个数学公式,最后怎么返回。10. css - BEM 中块(Block)有木有什么标准 何时决定一个部分提取为块而不是其父级的元素呢(Element)?~
排行榜
