Postgresql约束,其中子表具有日期,并且表的外键具有日期范围,因此父表';s日期范围对子项有效';日期

Postgresql约束,其中子表具有日期,并且表的外键具有日期范围,因此父表';s日期范围对子项有效';日期,postgresql,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, par

我正在使用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")
);
我想确保
子项。子项日期
始终位于其各自的
父项。父项日期范围

因此,这是有效的:

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]
你应该使用触发器。