MySQL、软件编程、后端开发、软件开发、码农、计算机软件、IT、数据库、DBA
业务场景
- 批量新增电影内容数据,但业务上如果发现存在了你想自己更像数据,不想唯一约束异常
- 传统办法,是想select判断出是否存在,然后if-else去insert 或update ,这些SQL必须2条,代码复杂,性能也不高。
语法说明
- Mysql replace into用法最简单的一种用法
- 就是直接将 “insert” 关键字替换为”replace”就可以啦。
- insert into table(… , …) values(… , …)
修改为
replace into table(… , …) values(… , …)
学生表,主键ID,唯一索引Sname
唯一索引Sname
例子
- 注意执行SQL后影响2行
- 执行钱主键23
- 执行后主键变24
- replace info对应那些没赋值的列,MySQL会自动赋上默认值
其实还有另外一种办法
总结
- ON DUPLICATE KEY UPDATE跟replace into比,语法复杂点点
- ON DUPLICATE KEY UPDATE执行后主键本身不会变化,不破坏索引,性能比replace into 要高
- replace into会让主键变化,所以业务强依赖索引的就不建议用此方法
- replace into底层是先删除后插入数据,但需要重新维护索引
- 必须要有主键或唯一索引才能有效,否则replace into就只新增了
缺点
- 高并发场景,注意死锁
- 主键会变化,注意是否影响你的业务
下面是replace into相似功能的文章,有兴趣的看看吧
ON DUPLICATE KEY UPDATE另外的方式
MySQL、软件编程、后端开发、软件开发、码农、计算机软件、IT、数据库、DBA
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5937.html