我正在使用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]