Postgres spustí několik jednoduchých kontrol funkce, kterou se pokoušíte vytvořit, a zjistí (správně), že tabulka work_list
(zatím) neexistuje. Vidím dvě možnosti:
1. „Faleš to, dokud to neuděláš“
Ve skutečnosti vytvořte (dočasnou) tabulku před vytvořením funkce. Dočasná tabulka bude na konci relace pryč, ale jakmile je funkce vytvořena, prošli jste tímto testem nadobro.
Je zřejmé, že před spuštěním funkce v té samé budete muset tuto tabulku zrušit. sezení, aby nedošlo ke konfliktu. Lepší však:použijte CREATE TEMP TABLE IF NOT EXISTS
ve vaší funkci (Postgres 9.1+). Možná budete chtít tabulku zkrátit, pokud již existuje ...
Nicméně (viz komentáře níže), cituji manuál
Tučné zdůraznění moje.
2. Místo toho použijte PL/pgSQL
Kontroly jsou v plpgsql méně důkladné. Pokud si Postgres stále stěžuje (což v tomto případě není), můžete také spouštět SQL dynamicky pomocí EXECUTE
.
Stranou:V mnoha případech existuje výkonnější řešení bez tabulky temp za rohem ...