sql >> Databasteknik >  >> RDS >> PostgreSQL

postgres känner inte igen temptabellen i funktion

Postgres kör några enkla kontroller av funktionen du försöker skapa, och den finner (korrekt) att tabellen work_list finns (ännu) inte. Jag ser två alternativ:

1. "Fake it tills you make it"

Skapa faktiskt den (tillfälliga) tabellen innan du skapar funktionen. Den tillfälliga tabellen kommer att försvinna i slutet av sessionen, men när funktionen har skapats har du klarat testet för gott.
Självklart måste du släppa den tabellen innan du kör funktionen i samma session för att undvika en konflikt. Bättre, dock:använd SKAPA TEMPERATABELL OM INTE FINNS i din funktion (Postgres 9.1+). Du kanske vill trunkera tabellen om den redan finns ...

Men (se kommentarerna nedan), med hänvisning till manualen

Djärv betoning min.

2. Använd PL/pgSQL istället

Kontrollerna är mindre noggranna i plpgsql. Om Postgres fortfarande klagar (vilket det inte gör i det här fallet) kan du också kör SQL dynamiskt med EXECUTE .

Bortsett från:I många fall finns det en mer presterande lösning utan tempbord runt hörnet ...



  1. Baserat på kolumndag sammanlänkade med datum som rubrik

  2. JPA 2.0 Oracle DATE har nulltid

  3. Subtrahera månader från aktuellt datum sql

  4. Undertrycka innehållet i SQLplus-kommandot i UNIX?