Bazy danych · Senior · Pytanie 64 z 75
Jak PostgreSQL może na poziomie bazy zapobiec dwóm nakładającym się rezerwacjom tej samej sali?
ALTER TABLE bookings ADD CONSTRAINT no_overlap
EXCLUDE USING gist (room_id WITH =, during WITH &&);- ✓Poprawna odpowiedź: Ograniczeniem wykluczającym na kolumnie zakresowej: żadne dwa wiersze nie mogą mieć tej samej sali i nakładających się przedziałów czasu
- 2Indeksem unikalnym na
room_id - 3To niemożliwe; trzeba to sprawdzać w kodzie aplikacji
Wyjaśnienie
Nie ma tu wyścigu, w przeciwieństwie do sprawdzania nakładania przed wstawieniem. Część z równością po room_id wymaga rozszerzenia btree_gist.