sql >> Base de Datos >  >> RDS >> PostgreSQL

postgres no reconoce la tabla temporal en función

Postgres ejecuta algunas comprobaciones simples en la función que está intentando crear y encuentra (correctamente) que la tabla work_list (todavía) no existe. Veo dos opciones:

1. "Fíngelo hasta que lo logres"

En realidad, cree la tabla (temporal) antes de crear la función. La tabla temporal desaparecerá al final de la sesión, pero una vez que se crea la función, habrá superado esta prueba definitivamente.
Obviamente, tendría que eliminar esa tabla antes de ejecutar la función en el mismo sesión para evitar un conflicto. Sin embargo, mejor:use CREATE TEMP TABLE IF NOT EXISTS en su función (Postgres 9.1+). Es posible que desee truncar la tabla si ya existe...

Sin embargo (ver comentarios a continuación), citando el manual

Énfasis en negrita mío.

2. Use PL/pgSQL en su lugar

Las comprobaciones son menos exhaustivas en plpgsql. Si Postgres aún se queja (lo que no ocurre en este caso), también puede ejecutar SQL dinámicamente con EXECUTE .

Aparte:en muchos casos, hay una solución más eficaz sin una tabla temporal a la vuelta de la esquina...