sql >> Database teknologi >  >> RDS >> PostgreSQL

postgres genkender ikke temp-tabel i funktion

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 ...



  1. PostgreSQL:nogle problemer at indsætte fra vælg med på konflikt

  2. PHP:mysql v mysqli v pdo

  3. 'Kan ikke konvertere MySQL dato/tidsværdi til System.DateTime', NÅR der ikke bruges en dato - C#.Net

  4. Oracle Konverter rækker til kolonner