【发布时间】:2017-11-05 17:07:52
【问题描述】:
假设如下表:
CREATE TABLE zoo (
cage INTEGER,
animal TEXT,
);
两者之间是否存在真正有效的区别:
ALTER TABLE zoo ADD CONSTRAINT x EXCLUDE USING gist (cage WITH =, animal WITH =)
和:
CREATE UNIQUE INDEX ON zoo(cage, animal)
?
【问题讨论】:
-
Quote from the manual: "如果所有指定的运算符都测试相等,这相当于一个 UNIQUE 约束,尽管普通的唯一约束会更快"
-
@a_horse_with_no_name:没有明确提及:
&&是否也测试相等性?EXCLUDE USING gist ( person_id WITH =, tstzrange(valid_from, valid_till, '[)' ) WITH && ) -
&&是“重叠”运算符:postgresql.org/docs/current/static/functions-range.html -
@a_horse_with_no_name: 但它也强制唯一性
标签: postgresql unique-constraint