正如我在文档中看到的那样,有可能创建拒绝重叠范围的gist索引
CREATE TABLE room_reservation (
room text,
during daterange,
EXCLUDE USING gist (room WITH =, during WITH &&)
);
它工作得很完美,但如何将其调整为不计算无限范围 - '(,)'(例如从-inf到inf的范围)与除self之外的任何内容重叠。例如,我想允许只添加一行无限边界,休息日期范围应该只使用&&操作员检查。
有效数据:
| room | during | | r1 | (,) | | r2 | (10.09.2012, 10.09.2013) | | r2 | (11.09.2013, 11.11.2013 |
并在=(01.01.2013,01.01.2015)期间插入行将抛出错误。
答案 0 :(得分:1)
扩展jug的评论
EXCLUDE USING gist (room WITH =, during WITH &&) WHERE( !isempty(during))