我目前正在使用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任何建议都将受到高度赞赏。
发布于 2022-01-07 06:16:47
看起来你不能像这样附加两个约束名称
ON CONFLICT ON CONSTRAINT live.table.pkey, live.table.fkey1 DO NOTHING但是你可以
ON CONFLICT ( col1, col2 ) DO NOTHING.或
ON CONFLICT DO NOTHING.通过选择仲裁器索引来指定对冲突采取替代操作的冲突。要么执行唯一索引推断,要么显式命名约束。对于ON CONFLICT DO NOTHING,指定conflict_target;是可选的。如果省略此参数,则与的冲突将以方式处理所有可用约束(和唯一索引)。对于ON CONFLICT DO UPDATE,必须提供conflict_target。
https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT
发布于 2018-09-18 18:05:29
使用上面的列创建约束,例如,
CONSTRAINT live_table_ukey UNIQUE(live.table.pkey, live.table.fkey1)然后在on constraint on constraint语句中使用该键。
https://stackoverflow.com/questions/35079779
复制相似问题