我目前正在寻找一种在PostgreSQL中可以限制给定表的有效外键数量的方法,方法是定义一个条件。
因此,场景如下所示:
https://dbfiddle.uk/?rdbms=postgres_11&fiddle=4dbe279906dc881598b7e72093534ce7
A、B、C分别代表不同的实体,每个具体条目都列在x_entry表中。
表A、B、C都代表给定条目的版本,以及它们有效的时间跨度。
我想确保表A始终具有对B和C的外键,其中条件为A.B.C == A.C
适用于A的时间范围。
如下所示
对于时间范围2000-3000的
Ainit
,违反了条件,因为在时间范围2100-3000
内的binit
具有到cinot
的外键,
而ainit
将其外键从cinit
更改为cinat
,违反了A.B.C == A.C
的条件。
但是,我该如何设置这样的条件限制,以防止外键违反某些条件?这是否可能呢?