我有以下PG (12) reservations表
id uuid
reservable_id uuid
reserved_between tsrange 如何确保同一reservable_id相互重叠时没有2个预订?
reservable_id上的“简单”唯一索引,reserved_between只在相同范围内工作(如预期的那样)。
发布于 2020-01-23 07:25:11
您需要btree_gist扩展,以便可以在uuid上创建一个GiST索引:
CREATE EXTENSION btree_gist;现在您可以创建一个排除约束:
ALTER TABLE reservations ADD EXCLUDE USING gist (
reservable_id WITH =,
reserved_between WITH &&
);&&是范围的“重叠”运算符。
https://dba.stackexchange.com/questions/258025
复制相似问题