首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql ON CONSTRAINT ON CONSTRAINT for 2 CONSTRAINT

postgresql ON CONSTRAINT ON CONSTRAINT for 2 CONSTRAINT
EN

Stack Overflow用户
提问于 2016-01-29 16:18:13
回答 2查看 10K关注 0票数 16

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

代码语言:javascript
复制
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语句中包含第二个约束。我已经尝试了下面的选项,但它似乎不适合我。

代码语言:javascript
复制
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

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

EN

回答 2

Stack Overflow用户

发布于 2022-01-07 06:16:47

看起来你不能像这样附加两个约束名称

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2018-09-18 18:05:29

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

代码语言:javascript
复制
CONSTRAINT live_table_ukey UNIQUE(live.table.pkey, live.table.fkey1)

然后在on constraint on constraint语句中使用该键。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35079779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档