sql >> Databasteknik >  >> RDS >> PostgreSQL

Finns det något som heter en tempfunktion?

Det finns ingen CREATE TEMP FUNCTION ... som den befintliga CREATE TEMP TABLE ... . Men det finns tricket att skapa en funktion i det tillfälliga schemat pg_temp , som det länkade svaret tillhandahåller . Funktionen är endast synlig inom samma session och kan endast anropas med ett schemakvalificerat namn:

CREATE FUNCTION pg_temp.f_inc(int)
  RETURNS int AS 'SELECT $1 + 1' LANGUAGE sql IMMUTABLE;

SELECT pg_temp.f_inc(42);
f_inc
-----
43

Jag kunde spåra idén till det här inlägget av Tom Lane på pgsql-allmänt .

Det närmaste utan knep skulle vara ett förberett uttalande . Fungerar ungefär som en tillfällig SQL-funktion som dör i slutet av sessionen. Inte samma sak, dock, och kan bara användas av sig själv, inte i samband med en större fråga. Exempel:

PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;

Ring:

EXECUTE upd_tbl(123, 'foo_name');

Detaljer:




  1. Hur flyttar jag min befintliga rails-app till heroku? (sqlite till postgres)

  2. kan inte ansluta till MySQL-databas med extern ip-adress

  3. MySQL-utlösare och SUM()

  4. SUM() baserat på ett annat villkor än SELECT