如何解决Postgres中的单个WITH子句中具有多个更新的多重约束检查FK,UNIQUE
我有此表和约束条件:
table_ttt (
id1,-- UNIQUE CONSTRAINT WHERE id1_ref IS NULL AND id2_ref IS NULL
id2,id1_ref,-- FOREIGN KEY (id1_ref,id2_ref) ON table_ttt (id1,id2)
id2_ref,data ...
)
,并且此单一语句具有多种效果:
WITH delta_list AS (
-- compute a list of rows
),update_refs AS (
UPDATE (id1_ref,id2_ref) to new rows (id1,id2) not yet INSERTed
)
INSERT some rows with the new (id1,id2),that will have (NULL,NULL) in (id1_ref,id2_ref)
问题陈述:
- 如果我先执行UPDATE,则FK约束将失败
- 如果我反转INSERT和UPDATE的顺序并首先执行INSERT,则UNIQUE约束将失败
- 即使是一小段行,我也无法对其进行测试,因为这样做的成本高昂。
我的问题是:
Postgres在执行这条语句后会检查两个约束,它将运行吗?
编辑:在9.4.11上运行它,它将实现CTE(也许此时将检查约束?)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。