DBAtlas · Atlas d'exploitation des bases de données

44000: with_check_option_violation

PostgreSQL

Que signifie cette erreur ?

Un INSERT/UPDATE via une vue définie WITH CHECK OPTION a été refusé car la ligne résultante ne satisfait plus la condition WHERE de la vue. La vue empêche l'écriture de lignes qui sortiraient de son propre filtre.

Cause

Une vue modifiable est définie WITH CHECK OPTION et l'écriture fait sortir la ligne de la condition de définition de la vue (par ex. passer une ligne à 'inactive' alors que la vue filtre status='active'). Un contrôle similaire peut se déclencher dans les politiques de row-level security (RLS).

Comment la corriger

Assurez-vous que les valeurs écrites satisfont la condition WHERE de la vue, ou effectuez l'opération directement sur la table de base plutôt que sur la vue (si les droits le permettent). Si la règle métier autorise la ligne à sortir du filtre, redéfinissez la vue sans WITH CHECK OPTION. Pour la RLS, revoyez l'expression WITH CHECK de la politique.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur