postgresql ON CONFLICT ON CONSTRAINT有2个约束

时间:2016-01-29 08:18:13

标签: postgresql sql-insert upsert

我正在使用PostgreSQL 9.5,并想知道是否有可能在ON CONFLICT ON CONSTRAINT语句中包含2个约束的名称。我的sql在

之下
INSERT INTO LIVE.TABLE (column1, column2, column3)
SELECT DISTINCT ON (cloumn1) column1, column2, column3
FROM STAGE.TABLE
​ON CONFLICT ON CONSTRAINT live.table.pkey DO NOTHING

这很好但是我想要做的是在ON CONFLICT ON CONSTRAINT语句中包含第二个约束。我试过以下选项,但它似乎对我不起作用。

INSERT INTO LIVE.TABLE (column1, column2, column3)
SELECT DISTINCT ON (cloumn1) column1, column2, column3
FROM STAGE.TABLE
​ON CONFLICT ON CONSTRAINT live.table.pkey, live.table.fkey1 DO NOTHING

任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

使用上面的列创建约束,例如,

CONSTRAINT live_table_ukey UNIQUE(live.table.pkey, live.table.fkey1)

然后在约束语句冲突时使用此键。