2F003: prohibited_sql_statement_attempted
PostgreSQLQue 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).