In psql können Sie diese "Variablen" als Makros verwenden. Beachten Sie, dass sie jedes Mal "ausgewertet" werden, wenn sie verwendet werden, und nicht erst dann, wenn sie "gesetzt" werden.
Einfaches Beispiel:
\set my_random '(SELECT random())'
select :my_random; -- gives 0.23330629315990592
select :my_random; -- gives 0.67458399344433542
dies ergibt zwei verschiedene antwortet jedes Mal.
Sie können diese jedoch als wertvolle Abkürzung verwenden, um die Wiederholung vieler Unterauswahlen zu vermeiden.
\set the_id '(SELECT id FROM table_1 WHERE name = ''xxx'' LIMIT 1)'
und verwenden Sie es später in Ihren Abfragen als
:the_id
z.B..
INSERT INTO table2 (table1_id,x,y,z) VALUES (:the_id, 1,2,3)
Beachten Sie, dass Sie die Zeichenketten in den Variablen in doppelte Anführungszeichen setzen müssen, da das Ganze dann in Ihre Abfrage hineininterpoliert (d. h. makroexpandiert) wird.
3 Stimmen
Es kann nur in PostgreSQL gemacht werden. Siehe die Antwort auf diese verwandte Frage: stackoverflow.com/questions/766657/
3 Stimmen
Diese verwandte Antwort hat bessere Antworten: stackoverflow.com/questions/13316773/