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

2F003: prohibited_sql_statement_attempted

PostgreSQL

Que signifie cette erreur ?

Une instruction interdite dans ce contexte a été tentée à l'intérieur d'une fonction/routine SQL. Appartient à la Class 2F (sql_routine_exception). Par exemple, une fonction censée être en lecture seule qui tente de modifier des données.

Cause

PostgreSQL lui-même lève rarement ce code ; il provient généralement du code d'une extension ou d'un langage procédural. Remarque : une fonction marquée IMMUTABLE/STABLE qui exécute INSERT/UPDATE/DELETE ne lève pas 2F003 ; elle lève '... is not allowed in a non-volatile function' avec le code 0A000 (feature_not_supported).

Comment la corriger

Lisez dans le message d'erreur quelle instruction a été interdite et consultez la documentation de la routine/extension concernée. Si vous obtenez l'erreur de fonction non volatile (0A000), définissez la fonction qui modifie les données comme VOLATILE (c'est la valeur par défaut) : CREATE FUNCTION ... LANGUAGE plpgsql VOLATILE. Retirez les appels modifiant les données des endroits qui doivent rester en lecture seule (expressions d'index, contrôles de contraintes).

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur