MySQL 之 INSERT INTO… ON DUPLICATE KEY UPDATE

19 篇文章 0 订阅
16 篇文章 0 订阅

INSERT INTO… ON DUPLICATE KEY UPDATE 批量更新

on duplicate key update 只是执行了update后面的语句。

如果表包含AUTO_INCREMENT列并INSERT ... ON DUPLICATE KEY UPDATE插入或更新行,则该LAST_INSERT_ID()函数返回该AUTO_INCREMENT值。

 

同类语句比较:

replace into  和 insert into on duplicate key update的不同在于:
a. replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值,用这个要悠着点否则不小心清空大量数据可不是闹着玩的。
b. insert into 则是只update重复记录,不会改变其它字段。

 

官方说明:https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

警告:通常,您应该尽量避免ON DUPLICATE KEY UPDATE 在具有多个唯一索引的表上使用子句

 

解决办法:

1、尽量不对存在多个唯一键的table使用该语句

2、在有可能有并发事务执行的insert 的内容一样情况下不使用该语句

 

相关文章:

https://blog.csdn.net/Michaelwubo/article/details/80930468

https://blog.csdn.net/qq2430/article/details/80511640

https://www.cnblogs.com/PatrickLiu/p/6385167.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值