如何使用on冲突子句更新多行?

时间:2019-06-12 21:48:56

标签: postgresql

我正在尝试对带有ON CONFLICT UPDATE子句的表进行批量增补(每个查询超过5万行)。

Ex: INSERT INTO foo (col1, col2, col3) values (v1,v2,v3), (v4,v5,v6) ON CONFLICT (col1, col2) DO UPDATE SET col3 = EXCLUDED.col3;

(col1,col2)元组是行的唯一标识符时,上述方法就可以正常工作。

可能我需要进行UPDATE会影响多行。

Ex: INSERT INTO foo (col1, col2, col3) values (v1,v2,v3), (v4,v5,v6) ON CONFLICT (col1) DO UPDATE SET col3 = EXCLUDED.col3;

我希望ON CONFLICT子句更新col1 = EXCLUDED.col1的所有行

但是当我在“ ON CONFLICT” postgres上放置一个非唯一元组时,将导致以下错误:“没有符合ON CONFLICT规范的唯一或排除约束”

有没有一种方法可以达到预期的行为?

0 个答案:

没有答案