文章详情页
mysql - INSERT ON DUPLICATE KEY 是如何判断重复key的?
浏览:49日期: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. html5 - 如何让H5页面在手机浏览器里和微信全屏显示2. mysql - oracle物化视图和临时表的区别是什么?3. 微信小程序如何加载h5页面4. MYSQL代码执行错误:FUNCTION any_value does not exist5. paramiko - Python tempfile生成的文件能不能拷贝到远程服务器?6. python - 能通过CAN控制一部普通的家用轿车吗?7. javascript - IOS没有上APP Store如何实现热更新?8. URL访问有问题啊9. css - calc()设置宽度等于自身的高度?10. node.js - nodejs开发中常用的连接mysql的库
排行榜