美文网首页数据库
[MySQL]MySQL如何做到无则插入有则更新(upsert)

[MySQL]MySQL如何做到无则插入有则更新(upsert)

作者: AbstractCulture | 来源:发表于2021-08-23 15:59 被阅读0次

    问题场景

    在排除一个生产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的值.

    如果文章帮到了你解决问题,给作者点个赞吧~

    相关文章

      网友评论

        本文标题:[MySQL]MySQL如何做到无则插入有则更新(upsert)

        本文链接:https://www.haomeiwen.com/subject/azdliltx.html