sql >> Database >  >> RDS >> PostgreSQL

postgres herkent de tijdelijke tabel niet in functie

Postgres voert enkele eenvoudige controles uit op de functie die u probeert te maken, en vindt (correct) dat de tabel work_list bestaat (nog) niet. Ik zie twee opties:

1. "Fake it till you make it"

Maak de (tijdelijke) tabel daadwerkelijk aan voordat u de functie maakt. De tijdelijke tabel is aan het einde van de sessie verdwenen, maar zodra de functie is gemaakt, hebt u deze test voorgoed doorstaan.
Het is duidelijk dat u die tabel moet verwijderen voordat u de functie in dezelfde sessie om een ​​conflict te voorkomen. Maar beter:gebruik CREATE TEMP TABLE IF NOT EXISTS in uw functie (Postgres 9.1+). Misschien wilt u de tabel afkappen als deze al bestaat ...

Echter (zie opmerkingen hieronder), onder verwijzing naar de handleiding

Vetgedrukte nadruk van mij.

2. Gebruik in plaats daarvan PL/pgSQL

De controles zijn minder grondig in plpgsql. Als Postgres nog steeds klaagt (wat in dit geval niet het geval is), kun je ook voer SQL dynamisch uit met EXECUTE .

Terzijde:in veel gevallen is er een meer performante oplossing zonder tijdelijke tafel om de hoek ...



  1. zorgt het instellen van een kolom om te indexeren in een mysql-tabel voor O(1) look-ups?

  2. Efficiënte manier om @@rowcount uit een query te halen met row_number

  3. Webpagina ophalen is niet gevonden en time-outfout op formulier

  4. 7 goede technische gewoonten die alle werkgevers zouden moeten aannemen