Postgres führt einige einfache Überprüfungen der Funktion durch, die Sie erstellen möchten, und findet (korrekt), dass die Tabelle work_list
existiert (noch) nicht. Ich sehe zwei Optionen:
1. "Fake it until you make it"
Erstellen Sie tatsächlich die (temporäre) Tabelle, bevor Sie die Funktion erstellen. Die temporäre Tabelle ist am Ende der Sitzung verschwunden, aber sobald die Funktion erstellt ist, haben Sie diesen Test endgültig bestanden.
Natürlich müssten Sie diese Tabelle löschen, bevor Sie die Funktion in derselben ausführen Sitzung, um Konflikte zu vermeiden. Besser jedoch:Verwenden Sie CREATE TEMP TABLE IF NOT EXISTS
in Ihrer Funktion (Postgres 9.1+). Möglicherweise möchten Sie die Tabelle abschneiden, wenn sie bereits vorhanden ist ...
Allerdings (siehe Kommentare unten) unter Angabe des Handbuchs
Fettdruck von mir.
2. Verwenden Sie stattdessen PL/pgSQL
In plpgsql sind die Prüfungen weniger gründlich. Wenn sich Postgres immer noch beschwert (was in diesem Fall nicht der Fall ist), können Sie auch SQL dynamisch mit EXECUTE
ausführen
.
Übrigens:In vielen Fällen gibt es eine performantere Lösung ohne temporäre Tabelle um die Ecke ...