我在同一个表上有两个独特的约束,我想在该表上做一个upsert语句。
是否可以在upsert中指定两个冲突?我看到了这个:How to upsert in Postgres on conflict on one of 2 columns?
但我的问题稍微复杂一些,因为其中一个唯一约束是另一个唯一约束的子集。即
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;
谢谢!
答案 0 :(得分:1)
根据documentation,ON CONFLICT
默认覆盖所有唯一约束。
如果省略,则会处理与所有可用约束(和唯一索引)的冲突
在您的情况下,正如Grzegorz Grabek所指出的那样,不需要两个约束。这是因为更严格的单列约束已经涵盖了较松散的两列约束。