让我们假设一个表:
CREATE TABLE foo (
id serial primary key
, range int4range NOT NULL
, barid integer references bar(id)
, baz whatever... NOT NULL
, EXCLUDE USING gist (range WITH &&, barid WITH =)
);
排除约束应该不允许相同“barid”值的重叠“范围”值。但我希望它像其他值一样对待“NULL”(因此不允许具有 barid = NULL 的不同记录的重叠猪范围)。所以给定 a = NULL 和 b = NULL,我想实现“a IS NOT DISTINCT FROM b”类型的行为,而不是“a = b”一个(如此处所述)。这样的运营商存在吗?目前我只能通过使用来实现这一点
EXCLUDE USING gist (range WITH &&, COALESCE(barid, -1) WITH =)