Postgres voert enkele eenvoudige controles uit op de functie die u probeert te maken, en vindt (correct) dat de tabel work_list
bestaat (nog) niet. Ik zie twee opties:
1. "Fake it till you make it"
Maak de (tijdelijke) tabel daadwerkelijk aan voordat u de functie maakt. De tijdelijke tabel is aan het einde van de sessie verdwenen, maar zodra de functie is gemaakt, hebt u deze test voorgoed doorstaan.
Het is duidelijk dat u die tabel moet verwijderen voordat u de functie in dezelfde sessie om een conflict te voorkomen. Maar beter:gebruik CREATE TEMP TABLE IF NOT EXISTS
in uw functie (Postgres 9.1+). Misschien wilt u de tabel afkappen als deze al bestaat ...
Echter (zie opmerkingen hieronder), onder verwijzing naar de handleiding
Vetgedrukte nadruk van mij.
2. Gebruik in plaats daarvan PL/pgSQL
De controles zijn minder grondig in plpgsql. Als Postgres nog steeds klaagt (wat in dit geval niet het geval is), kun je ook voer SQL dynamisch uit met EXECUTE
.
Terzijde:in veel gevallen is er een meer performante oplossing zonder tijdelijke tafel om de hoek ...