PG的upsert写法 批量处理写法

create table test_user
(
    id     bigserial,
    user_name   varchar(30) not null,
    gender varchar(30),
    account varchar(30) not null,
    created_time timestamp(6) with time zone,
    primary key(id)
);

-- 新增一条数据
INSERT INTO test_user(user_name, gender, account, created_time) values ('dalao','male','dalao',now());

-- 模拟主键冲突
INSERT INTO test_user(id,user_name, gender, account, created_time) values (1,'dalao','male','dalao',now());

-- 冲突时什么都不做
INSERT INTO test_user(id,user_name, gender, account, created_time) values (1,'dalao','male','dalao',now())
ON CONFLICT(id)
DO NOTHING ;

-- 使用PG的UPSERT 冲突时更新数据
INSERT INTO test_user(id,user_name, gender, account, created_time) values (1,'dalao','male','dalao',now())
ON CONFLICT(id)
DO UPDATE
SET user_name = 'dalao', gender='male2', account='dalao2', created_time = now();

-- mybatis 使用pg的upsert 批量操作 冲突时更新数据
<insert id="upsertBatch" >
    insert into test_user(id,user_name, gender, account, created_time)
    values
    <foreach collection="entities" item="entity" separator=",">
        (#{entity.id},#{entity.userName}, #{entity.gender}, #{entity.account},#{entity.createdTime})
    </foreach>
    on conflict (id) do update set
    user_name = EXCLUDED.user_name , gender = EXCLUDED.gender , account = EXCLUDED.account , created_time = EXCLUDED.created_time 
</insert>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值