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

03-22 2372阅读 0评论

1.场景:执行upsret语句时报错there is no unique or exclusion constraint matching the ON CONFLICT specification

关于postgresql 报错there is no unique or exclusion constraint matching the ON CONFLICT specification 第1张
(图片来源网络,侵删)

2.解决方法:找到CONFLICT 语句约束的条件,将其增加唯一约束,如果是id则主键,这次的问题是id主键被删除。

3.sql语句:

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

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

CONFLICT约束的值必须是唯一的,如果不唯一将会报错。

RETURNING id 表示此次查询将返回id。

关于postgresql 报错there is no unique or exclusion constraint matching the ON CONFLICT specification 第2张
(图片来源网络,侵删)

免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,2372人围观)

还没有评论,来说两句吧...

目录[+]