问题场景
在排除一个生产BUG的时候发现,有个关于库存调拨的业务出现了唯一键冲突,最终定位到是设计表的时候,DDL设置了一个组合唯一索引。在重复插入一条业务数据的时候,触发了这个数据库的DUPLICATE KEY
.
解决的办法很简单,做到"无则插入,有则更新"即可。
ON DUPLICATE KEY UPDATE
MySQL提供了ON DUPLICATE KEY UPDATE
来解决这个问题.
insert into
stock_prededuct_record(num,stockNumId,bizOrderId,bizOrderDetailId,bizType,bizNo,state,remark,stockOperateLogId,createTime)
values
(5,1,0,36277777,3,'XXX',1,'测试数据',0,now())
ON DUPLICATE KEY UPDATE num = num + VALUES(num);
没有这条数据的时候插入,有则累计.
VALUES表示的是insert的时候num的值.
如果文章帮到了你解决问题,给作者点个赞吧~
网友评论