1

正如我在文档中看到的那样,有可能创建将拒绝重叠范围的 gist 索引

CREATE TABLE room_reservation (
    room text,
    during daterange,
    EXCLUDE USING gist (room WITH =, during WITH &&)
);

它工作得很好,但是如何调整它以不计算无限范围 - '(,)'(例如从 -inf 到 inf 的范围)重叠到除了 self 之外的任何东西。例如,我想只允许添加一个无限边界的行,而休息日期范围应该只使用 && 运算符来检查。

有效数据:

| 房间 | 期间|
| r1 | (,) |
| r2 | (10.09.2012, 10.09.2013) |
| r2 | (11.09.2013, 11.11.2013 |

并插入带有 during = (01.01.2013, 01.01.2015) 的行会抛出错误。

4

1 回答 1

1

展开 jug 的评论

 EXCLUDE USING gist (room WITH =, during WITH &&) WHERE( !isempty(during))
于 2012-10-28T10:07:20.110 回答