DBAtlas · Atlas de operaciones de bases de datos

2F003: prohibited_sql_statement_attempted

PostgreSQL

¿Qué significa?

Se intentó, dentro de una función/rutina SQL, una sentencia prohibida en ese contexto. Pertenece a la Class 2F (sql_routine_exception). Por ejemplo, una función que se espera de solo lectura intenta modificar datos.

¿Por qué ocurre?

El núcleo de PostgreSQL rara vez genera este código; suele provenir de código de extensiones o de lenguajes procedurales. Nota: una función marcada IMMUTABLE/STABLE que ejecuta INSERT/UPDATE/DELETE no genera 2F003; genera '... is not allowed in a non-volatile function' con el código 0A000 (feature_not_supported).

Cómo solucionarlo

Lea en el mensaje de error qué sentencia se prohibió y consulte la documentación de la rutina/extensión implicada. Si obtiene el error de función no volátil (0A000), defina la función que modifica datos como VOLATILE (es el valor predeterminado): CREATE FUNCTION ... LANGUAGE plpgsql VOLATILE. Elimine las llamadas que modifican datos de los lugares que deben ser de solo lectura (expresiones de índice, comprobaciones de restricciones).

Abrir en DBAtlas →

Más entradas de este motor