postgresql 如果Postgres数据库中的多个列发生冲突,则向上插入

pw136qt2  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(161)

我在Postgres数据库中有一个没有主键的表。如果2列的组合有相同的值,我想更新。

...
ON CONFLICT (col1, col2)
DO UPDATE

ELSE 
INSERT
...

我找不到没有主键的任何内容。另外,col1和col2的组合是唯一的。col1可以有多行具有相同的值,col2也可以有多行,但不能放在一起。
我的表是这样的:

col1  col2
1     A    
1     B
2     A
2     B

我不能对这两列中的任何一列进行唯一约束,但是将索引添加到一个组合中的工作原理如下:

CREATE TABLE example (
col1 integer,
col2 integer,
col3 integer,
UNIQUE (col1, col2));


但是现在,如何处理插入。ON CONFLICT条件应该是什么,因为我们不能在2列上,所以回到同一个问题。

jdgnovmf

jdgnovmf1#

事实上,在这里找到了它,但不是在标记为答案的帖子中,而是评分最高的帖子。Use multiple conflict_target in ON CONFLICT clause
因此,我们的查询将如下所示:

INSERT into example (col1, col2, col3)
VALUES (1, 2, 3)
ON CONFLICT (col1, col2) DO UPDATE 
SET col3 = 42

相关问题