当前位置: 代码迷 >> 综合 >> Postgre SQL ERROR:there is no unique or exclusion constraint matching the ON CONFLICT specification
  详细解决方案

Postgre SQL ERROR:there is no unique or exclusion constraint matching the ON CONFLICT specification

热度:28   发布时间:2023-12-18 09:43:04.0

原因是sql语句中用到了conflict但表结构里面没有相关的限制

举例:
表结构如下:

CREATE TABLE "public"."test" ("a" varchar(255) COLLATE "pg_catalog"."default","b" varchar(255) COLLATE "pg_catalog"."default","c" varchar(255) COLLATE "pg_catalog"."default"
);

执行插入并使用confict:

insert into test values('a','b') on conflict(a,b) do update set c='1';

由于建表时没有建关于a,b的CONSTRAINT,于是就会报错,为表添加CONSTRAINT:

ALTER TABLE "public"."test" ADD CONSTRAINT "test_pkey" PRIMARY KEY ("a", "b");

再执行就成功了。

  相关解决方案