Postgresql约束,其中子表具有日期和具有日期范围的表的外键,使得父日期范围对于子日期

时间:2016-11-28 20:09:58

标签: postgresql

我正在使用PostgreSQL 9.4。假设我有两张桌子:

CREATE TABLE parents(
    id serial not null,
    parent_daterange daterange not null,
    constraint "parent_id" primary key ("id")
);
CREATE TABLE children(
    id serial not null,
    child_date date not null,
    parent_id int4 not null references parents(id),
    constraint "child_id" primary key ("id")
);

我想确保children.child_date始终位于各自的parents.parent_daterange内。

所以,这是有效的:

select * from children;
id | child_date | parent_id
---+------------+-----------
1  | 2016-01-01 |         1

select * from parents;
id | parent_daterange
---+------------------
1  | [2015-12-31,2016-01-10]

这不会有效,在这种情况下,我希望children表上的INSERT语句失败:

select * from children;
id | child_date | parent_id
---+------------+-----------
1  | 2016-01-11 |         1

select * from parents;
id | parent_daterange
---+------------------
1  | [2015-12-31,2016-01-10]

0 个答案:

没有答案