У меня есть следующая таблица:
events
- id
- venue_id
- starts_at
- ends_at
Я нашел это ограничение https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-EXCLUDE, но я не уверен, что понимаю, как я могу использовать его, чтобы предотвратить создание перекрывающихся событий при учете venue_id
, чтобы могли быть перекрывающиеся события, но не для одних и тех же мест.
Например:
EXCLUDE USING gist (tsrange(starts_at, ends_at)
и как-то учитывать местонахождение_id
Спасибо
Вам нужно объединить «перекрытие» диапазона временных меток с оператором =
в venue_id
alter table events
add constraint no_overlapping_events
exclude using gist (venue_id with =, tsrange(starts_at, ends_at) with &&)
Обратите внимание, что для этого требуется расширение bree_gist из-за использования оператора =
.
Благодарю вас! Я обновлю свою базу данных, чтобы включить
CREATE EXTENSION btree_gist;