Datenbanken · Senior · Frage 64 von 75
Wie kann PostgreSQL auf Datenbankebene zwei überlappende Buchungen desselben Raums verhindern?
ALTER TABLE bookings ADD CONSTRAINT no_overlap
EXCLUDE USING gist (room_id WITH =, during WITH &&);- 1Eine Exclusion Constraint über einen Bereich
- 2Ein eindeutiger Index auf der Spalte
room_id - 3Unmöglich; im Anwendungscode prüfen
Antwort zeigen
Richtige Antwort: Eine Exclusion Constraint über einen Bereich
Erklärung
Das ist frei von Race Conditions, anders als vor dem Einfügen auf Überlappungen zu prüfen. Für den Gleichheitsteil auf room_id braucht es die Erweiterung btree_gist.