Бази даних · Senior · Запитання 64 з 75

Як PostgreSQL може на рівні бази заборонити два бронювання однієї кімнати, що перетинаються?

ALTER TABLE bookings ADD CONSTRAINT no_overlap
  EXCLUDE USING gist (room_id WITH =, during WITH &&);

Пояснення

Тут немає гонитв, на відміну від перевірки перетину перед вставкою. Для частини з рівністю по room_id потрібне розширення btree_gist.

Де почитати

Помилка в запитанні

Бази даних · Senior · запитання 64

Перевірте себе

Пройдіть тест Бази даних · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест