DBAtlas · Atlas für Datenbankbetrieb

23P01: exclusion_violation

PostgreSQL

Was bedeutet das?

Ein EXCLUDE-Constraint (Exclusion Constraint) wurde verletzt. Dieser Constraint-Typ verhindert, dass zwei Zeilen gemäß bestimmten Operatoren (z. B. Bereichsüberlappung &&) kollidieren; die eingefügte/aktualisierte Zeile wurde abgelehnt, weil sie mit einer vorhandenen Zeile kollidiert.

Ursache

Typischerweise ist ein GiST-basierter EXCLUDE-Constraint definiert (z. B. Verbot zeitlicher Überlappungen mit tstzrange && für Termin-/Raumbuchungen), und die neue Zeile hat einen Bereich/Wert, der eine vorhandene Zeile überlappt. Kann auch auftreten, wenn zwei parallele Transaktionen überlappende Bereiche einfügen.

Lösung

Prüfe vor dem Einfügen per Abfrage auf Überlappung oder fange den Fehler in der Anwendung ab und zeige dem Benutzer eine aussagekräftige Meldung. Frage den betreffenden Bereich bzw. die Bedingung ab, um die kollidierende vorhandene Zeile zu finden. Erlaubt die Geschäftsregel Überlappungen, lockere den Constraint; andernfalls korrigiere die Eingabe. Wiederhole die Transaktion bei Parallelität sicher, um sie zu serialisieren.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank