mysql,postgresql插入操作遇到唯一键重复更新

1.mysql的

<insert id="insertOrUpdateNew">
        insert into test
        (a,b,c)
        values
        (#{a},#{b},#{c})
        on duplicate key update
        c = values(c)
    </insert>

    <insert id="insertOrUpdateNewNew">
        insert into test
        (a,b,c)
        values
        <foreach collection="list" item="l" separator=",">
            (#{l.a},#{l.b},#{l.c})
        </foreach>
        on duplicate key update
        c = values(c)
    </insert>

2.postgresql

 <insert id="insertOrUpdateNew">
        insert into test
        (a,b,c)
        values
        (#{a},#{b},#{c})
        on conflict(a,b)
        do update set
        c = #{c}
    </insert>

    <insert id="insertOrUpdateNewNew">
        insert into test
        (a,b,c)
        values
        <foreach collection="list" item="l" separator=",">
        (#{l.a},#{l.b},#{l.c})
        </foreach>
        on conflict(a,b) do nothing
    </insert>

推荐下面:

    <insert id="insertOrUpdateNew">
        insert into test
        (a,b,c)
        values
        (#{a},#{b},#{c})
       on conflict(a,b) do update set c = excluded.c
    </insert>

postgresql插入的多条的话,总是报错....看网上也有人这样啊,难道版本原因,请大牛解答~

        insert into test
        (a,b,c)
        values
		(1,1,2),(1,1,3)
        on conflict(a,b) do update set c = excluded.c

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值