Configuración de configuración dinámica
puede "abusar" de la configuración dinámica de configuración para esto:
-- choose some prefix that is unlikely to be used by postgres
set session my.vars.id = '1';
select *
from person
where id = current_setting('my.vars.id')::int;
Los ajustes de configuración siempre son valores varchar, por lo que debe convertirlos al tipo de datos correcto cuando los use. Esto funciona con cualquier cliente SQL, mientras que \set
solo funciona enpsql
Lo anterior requiere Postgres 9.2 o posterior.
Para versiones anteriores, la variable tenía que declararse postgresql.conf
antes de ser utilizada, por lo que limitaba un poco su usabilidad. En realidad no es la variable completamente, sino la "clase" de configuración, que es esencialmente el prefijo. Pero una vez que se definió el prefijo, cualquier variable podría usarse sin cambiarpostgresql.conf