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

猜你喜欢

转载自blog.csdn.net/myth_g/article/details/82790354