关于postgresql 报错there is no unique or exclusion constraint matching the ON CONFLICT specification

1.场景:执行upsret语句时报错there is no unique or exclusion constraint matching the ON CONFLICT specification
2.解决方法:找到CONFLICT 语句约束的条件,将其增加唯一约束,如果是id则主键,这次的问题是id主键被删除。
3.sql语句:

INSERT INTO 表名 (id, 字段) VALUES ($1, $2) ON CONFLICT (id) DO UPDATE SET 字段= XXX RETURNING id 

4.解释:CONFLICT表示冲突,用于upsert操作,这种写法跟update,insert的区别就是当执行 INSERT 操作时,如果数据表中不存在对应的记录,PostgreSQL 将会执行插入操作,否则将会更新这条数据,就无须在代码里面先去查询某条语句是否存在。
CONFLICT约束的值必须是唯一的,如果不唯一将会报错。
RETURNING id 表示此次查询将返回id。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值