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 (将#修改为@)