WITHOUT OVERLAPS. Это прям то, что нужно для систем бронирований, и в целом заметно проще, чем прошлые решения.CREATE EXTENSION IF NOT EXISTS btree_gist;
CREATE TABLE staff_schedule (
staff_id int,
shift_duration tstzrange,
task_description text,
PRIMARY KEY (staff_id, shift_duration WITHOUT OVERLAPS)
);
- создаёт индекс, который комбинирует range и int
- не даёт добавлять дублирующиеся временные записи
👉 @SQLPortal
