Postgres kører nogle simple tjek af den funktion, du forsøger at oprette, og den finder (korrekt), at tabellen work_list
eksisterer (endnu) ikke. Jeg ser to muligheder:
1. "Fake it indtil you make it"
Opret faktisk den (midlertidige) tabel, før du opretter funktionen. Den midlertidige tabel vil være væk i slutningen af sessionen, men når funktionen er oprettet, har du bestået denne test for altid.
Det er klart, at du skal droppe den tabel, før du kører funktionen i den samme session for at undgå en konflikt. Bedre dog:brug OPRET TEMP-TABEL, HVIS IKKE FINNES
i din funktion (Postgres 9.1+). Du ønsker måske at afkorte tabellen, hvis den allerede eksisterer ...
Dog (se kommentarer nedenfor), med henvisning til manualen
Fed fremhævelse mine.
2. Brug PL/pgSQL i stedet
Kontroller er mindre grundige i plpgsql. Hvis Postgres stadig klager (hvilket den ikke gør i dette tilfælde), kan du også udfør SQL dynamisk med EXECUTE
.
Til side:I mange tilfælde er der en mere effektiv løsning uden vikarbord rundt om hjørnet ...