我想使用insert .. on confict do update ..语法与一个对两列有唯一约束的表.这可能吗?
例如,mytable对col1和col2有独立的唯一约束.
我可以写:
INSERT INTO mytable(col1, col2, col3) values ('A', 'B', 0) ON CONFLICT DO NOTHING;
Run Code Online (Sandbox Code Playgroud)
但是这不起作用:
INSERT INTO mytable(col1, col2, col3) VALUES ('A', 'B', 0)
ON CONFLICT
DO UPDATE SET col3 = EXCLUDED.col3 + 1;
Run Code Online (Sandbox Code Playgroud)
错误:ON CONFLICT DO UPDATE需要推理规范或约束名称
这也行不通:
INSERT INTO mytable(col1, col2, col3) VALUES ('A', 'B', 0)
ON CONFLICT (col1, col2)
DO UPDATE SET col3 = EXCLUDED.col3 + 1;
Run Code Online (Sandbox Code Playgroud)
错误:没有与ON CONFLICT规范匹配的唯一或排除约束
此语法似乎是针对两列而不是两个约束的单个复合唯一约束而设计的.
如果违反任何唯一约束,有没有办法进行条件更新?这个问题如何在Postgres中关于2列中的一列冲突?暗示但不提供语法.
postgresql ×1