【发布时间】:2019-04-11 02:22:25
【问题描述】:
我的表权限如下:
id serial,
person_id integer,
permission_id integer,
valid_from date,
valid_to date
我想防止创建与 valid_from、valid_to 日期重叠的权限
例如。
1 | 1 | 1 | 2010-10-01 | 2999-12-31
2 | 1 | 2 | 2010-10-01 | 2020-12-31
3 | 2 | 1 | 2015-10-01 | 2999-12-31
这个可以加:
4 | 1 | 3 | 2011-10-01 | 2999-12-31 - because no such permission
5 | 2 | 1 | 2011-10-10 | 2999-12-31 - because no such person
6 | 1 | 2 | 2021-01-01 | 2999-12-31 - because doesn't overlaps id:2
但这不能
7 | 1 | 1 | 2009-10-01 | 2010-02-01 - because overlaps id:1
8 | 1 | 2 | 2019-01-01 | 2022-12-31 - because overlaps id:2
9 | 2 | 1 | 2010-01-01 | 2016-12-31 - beacuse overlaps id:3
我可以进行外部检查,但想知道是否可以在数据库上进行检查
【问题讨论】:
标签: postgresql indexing constraints unique