mysql - INSERT ON DUPLICATE KEY 是如何判断重复key的?
ringa_lee
ringa_lee 2017-04-17 16:29:25
[MySQL讨论组]

使用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的?

ringa_lee
ringa_lee

ringa_lee

全部回复(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...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号