PostgreSQL基于范围数字字段的唯一索引

Rei*_*ien 2 postgresql indexing

我有一个scheduleitem与列的表room,dayofweek,starttimeendtime.我想能够在创建唯一索引roomdayofweek其中谓词(以某种方式)防止表从含有重叠的时间,也就是,防止重叠,其中一个潜在的新行r2和任何给定的现有行r1满足

r2.endtime > r1.starttime and r1.endtime > r2.starttime
Run Code Online (Sandbox Code Playgroud)

到目前为止,我无法将子查询添加到部分索引谓词中,并且我在唯一列列表中引用的任何存储过程都必须是不可变的(不能运行任何查询),所以我很难过.

Mag*_*der 5

您正在寻找功能排除约束 - 请参阅http://www.postgresql.org/docs/9.0/static/sql-createtable.html并查看有关EXCLUDE的部分.