简化的 MN 连接表
CREATE TABLE dummy (
fkey1 int, /* omitting FK clause */
fkey2 int,
/* could also separate begin and end dates */
effective_dates_of_assignment daterange,
EXCLUDE /* WHAT GOES HERE?? */
)
我想要一个明显的排除规则,即如果fkey
字段相同,则日期没有重叠。(如果键不同,则不排除。)
到目前为止,我最好的想法是添加贡献的多维数据集模块并在所有三个字段上创建一个 gist 多列索引。但是虽然它看起来像一个 3-D 立方体,重叠约束将在其中两个中退化。那么这里是什么
EXCLUDE USING gist (cube([fkey1, fkey2, lower(effective_dates_of_assignment)],
[fkey1, fkey2, upper(effective_dates_of_assignment)])
WITH &&)
这种使用附加模块的解决方案是否最适合相对常见的用例?