微信公众号:码农私塾
关注可获得更多编程知识分享
如果你觉得文章对你有帮助,欢迎赞赏
目录
新增或修改ON DUPLICATE KEY UPDATE总结
新增或修改
实际工作中经常会有这样的场景,某个数据 如果存在了 就修改 不存在就插入新的值,实现的方式也有多种 可以通过代码 先查询是否存在这个记录 存在进行修改 不存在就是新增 也可以采用sql语句来实现
1if exists (查询数据语句)
2 修改语句
3 else
4 插入语句
不过这两种方式 在高并发情况下 都会存在问题 都需要事务控制 性能开销会更大
ON DUPLICATE KEY UPDATE
从字面意思也可以看出来 有重复key就进行更新 这里的key是指 索引(主键,唯一,联合) 如果值存在重复就会执行更新语句,这是mysql独有的,其他数据库不支持
1insert into 表名 (列1,列2) values(值1,值2) ON DUPLICATE KEY UPDATE 列1=值1,列2=值2
插入的列里面必须有索引列 判断索引列值存在 才会执行修改 如果没有索引列 就只会是插入 不会有修改的情况
总结
ON DUPLICATE KEY UPDATE 算是一个优雅解决新增或修改问题的方案 但是也有缺点 插入的列必须有索引 否则不会判断是否重复 执行修改 如果本身要新增修改的列就没有索引 要单独去加 会造成额外的数据库负担 有更大的使用成本,并且让数据库执行过多的逻辑也会给数据库造成过大的压力,还是要根据具体的情况来决定.没有最完美通用的方案
文章转载自码农私塾,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






