Exclusion Constraint
Die Verallgemeinerung der Eindeutigkeit: Statt zu verlangen, dass zwei Zeilen nicht denselben Wert haben, kann man verlangen, dass sie sich nicht überlappen, kreuzen oder zu nahe kommen.
Ein Unique-Index ist der Sonderfall, bei dem der Operator zufällig Gleichheit ist. PostgreSQL erlaubt, stattdessen einen beliebigen vom Indextyp unterstützten Operator zu wählen, was Bedingungen öffnet, die sich deklarativ sonst nicht ausdrücken lassen. Das Lehrbuchbeispiel sind Buchungen: EXCLUDE USING gist (raum WITH =, zeit WITH &&) besagt, dass keine zwei Zeilen denselben Raum und gleichzeitig überlappende Zeiträume haben dürfen. Die Alternative in der Anwendung ist, erst zu fragen, ob der Slot frei ist, und dann zu schreiben – eine Race Condition, die nur auf genug Traffic wartet, um einzutreten. Um Gleichheit auf gewöhnlichen Spalten mit Überlappung auf Bereichen zu mischen, braucht es die Erweiterung btree_gist.