DBAtlas · Atlas für Datenbankbetrieb

44000: with_check_option_violation

PostgreSQL

Was bedeutet das?

Ein INSERT/UPDATE über eine WITH CHECK OPTION definierte View wurde abgelehnt, weil die resultierende Zeile die WHERE-Bedingung der View nicht mehr erfüllt. Die View verhindert das Schreiben von Zeilen, die aus ihrem eigenen Filter fallen würden.

Ursache

Eine aktualisierbare View ist WITH CHECK OPTION definiert, und der Schreibvorgang verschiebt die Zeile aus der definierenden Bedingung der View (z. B. eine Zeile wird auf 'inactive' gesetzt, während die View nach status='active' filtert). Eine ähnliche Prüfung kann in Policies der Row-Level Security (RLS) greifen.

Lösung

Stelle sicher, dass die geschriebenen Werte die WHERE-Bedingung der View erfüllen, oder führe die Operation direkt auf der Basistabelle statt auf der View aus (sofern die Rechte es erlauben). Erlaubt die Geschäftsregel, dass die Zeile den Filter verlässt, definiere die View ohne WITH CHECK OPTION neu. Prüfe bei RLS den WITH CHECK-Ausdruck der Policy.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank