PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

postgres não reconhece a tabela temporária na função


O Postgres executa algumas verificações simples na função que você está tentando criar e descobre (corretamente) que a tabela work_list (ainda) não existe. Vejo duas opções:

1. "Finja até conseguir"

Na verdade, crie a tabela (temporária) antes de criar a função. A tabela temporária desaparecerá no final da sessão, mas assim que a função for criada, você passará neste teste definitivamente.
Obviamente, você teria que descartar essa tabela antes de executar a função no mesmo sessão para evitar um conflito. Melhor, porém:use CREATE TEMP TABLE IF NOT EXISTS em sua função (Postgres 9.1+). Você pode querer truncar a tabela se ela já existir ...

No entanto (ver comentários abaixo), citando o manual

Minha ênfase em negrito.

2. Use PL/pgSQL em vez disso


As verificações são menos completas no plpgsql. Se o Postgres ainda reclamar (o que não acontece neste caso), você também pode executar SQL dinamicamente com EXECUTE .

À parte:em muitos casos, existe uma solução com melhor desempenho sem mesa temporária ao virar da esquina ...