我有以下表格:
我想创建一个“排除约束”来强制确保同一房间没有重叠的约会。
我尝试了以下方法:
这有两个问题:
create table booking (
identifier integer not null primary key,
room uuid not null,
start_time time without time zone not null,
end_time time without time zone not null
);
我想创建一个“排除约束”来强制确保同一房间没有重叠的约会。
我尝试了以下方法:
alter table booking add constraint overlapping_times
exclude using gist
(
cast(room as text) with =,
period(start_time, end_time) with &&)
);
这有两个问题:
将
room
转换为text
不够,会出现错误:ERROR: data type text has no default operator class for access method "gist"
。我知道在v10中有btree_gist
,但我正在使用v9.5和v9.6,所以我必须手动将uuid
转换为text
。period(...)
是错误的,但我不知道如何构建一个time without time zone
类型的范围。
btree_gist
支持uuid
类型。 - Franz They