我有一个scheduleitem
表,其中包含room
,dayofweek
,starttime
和endtime
的列。我希望能够在room
和dayofweek
上创建唯一索引,其中谓词(以某种方式)阻止表包含重叠时间,即防止重叠在潜在的新行{{ 1}}和任何给定的现有行r2
满足
r1
到目前为止,我无法将子查询添加到部分索引谓词中,并且我在唯一列列表中引用的任何存储过程都必须是不可变的(不能运行任何查询),所以我很难过。
答案 0 :(得分:5)
您正在寻找功能排除约束 - 请参阅http://www.postgresql.org/docs/9.0/static/sql-createtable.html并查看有关EXCLUDE的部分。
答案 1 :(得分:1)
为什么不使用触发器?您可以阅读here。