【发布时间】:2012-09-25 21:37:43
【问题描述】:
正如我在文档中看到的,有可能创建将拒绝重叠范围的 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) 插入行会抛出错误。
【问题讨论】:
-
您应该能够通过在排除约束中添加正确的“WHERE(谓词)”来使用部分索引来忽略无限范围(请参阅postgresql.org/docs/9.2/static/…)。
标签: postgresql range date-range postgresql-9.2