PostgreSQL 在一个 upsert 语句中多次发生冲突

标签 postgresql upsert

我在同一个表上有两个唯一的约束,我想在该表上执行一个 upsert 语句。
是否可以在 upsert 中指定两个冲突?我看到了这个:How to upsert in Postgres on conflict on one of 2 columns?
但我的问题稍微复杂一些,因为其中一个唯一约束是另一个唯一约束的子集。 IE。
unique_constraint_1 = (col_1)
unqiue_constraint_2 = (col_1, col_2)

INSERT INTO table (col_1, col_2, col_3) 
VALUES (val_1, val_2, val_3) 
ON CONFLICT (what do I put here to account for both constraints?) 
DO NOTHING; 
谢谢!

最佳答案

根据 documentation , ON CONFLICT默认情况下涵盖所有唯一约束。

when omitted, conflicts with all usable constraints (and unique indexes) are handled


在您的情况下,不需要两个约束,正如 Grzegorz Grabek 已经指出的那样。那是因为更严格的单列约束已经覆盖了较宽松的两列约束。

关于PostgreSQL 在一个 upsert 语句中多次发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38110413/

相关文章:

java - 如何让 postgres JDBC 在 Scala Mac OS 中工作?

regex - 仅在 Django 查询中进行全字匹配

sql - 检查至少存在一条记录

java - 使用 Hibernate 根据唯一键查找或插入

mongodb - mongodb文档更新后什么时候过期?

python - 表 "column"中有一个名为 "table"的列,但无法从这部分查询中引用它

python - 当参数为 datetime.date 时,SQLAlchemy 丢失查询数据

sql - MS SQL 相当于 ON DUPLICATE KEY UPDATE/UPSERT

PostgreSQL 10 : How to add unique with constraint and default value -1

sql - 在 MS-access 中更新