Postgresql 带“的外键约束”;其中;

Postgresql 带“的外键约束”;其中;,postgresql,Postgresql,是否可以使用带有where的外键约束 CREATE TABLE child_version_2_parent_data ( child_id SERIAL PRIMARY KEY, ...some other meta data... ) CREATE TABLE child ( child_id SERIAL PRIMARY KEY REFERENCES parent WHERE version = 2, version int ) 我有一个表,其中大约有1亿行(版本1-基

是否可以使用带有where的外键约束

CREATE TABLE child_version_2_parent_data (
  child_id SERIAL PRIMARY KEY,
  ...some other meta data...
)

CREATE TABLE child (
  child_id SERIAL PRIMARY KEY REFERENCES parent WHERE version = 2,
  version int
)

我有一个表,其中大约有1亿行(版本1-基本上是遗留行)没有父行。在下一个版本中,所有新行都将有一个父行

表示数据的技术正确方法是为不同的版本有不同的表。

我要表达这一点的方式是允许
子id
列为空,但使用
引用父行
,并强制执行“正确性”,添加一个额外的
检查约束(版本<2或子id不为空)

如果您想确保
版本=2
的所有行都具有
不为空
子id
您可以使用
检查
约束。很抱歉澄清。子表上的child_id是主键。所有行在此表上都有子id我想对版本2的子行强制外键约束以引用另一个表