Настройки динамической конфигурации
Вы можете «злоупотреблять» настройками динамической конфигурации для этого:
-- 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;
Настройки конфигурации всегда являются значениями varchar, поэтому вам необходимо привести их к правильному типу данных при их использовании. Это работает с любым клиентом SQL, тогда как \set
работает только вpsql
Выше требуется Postgres 9.2 или более поздняя версия.
Для предыдущих версий переменная должна была быть объявлена postgresql.conf
до ее использования, поэтому она несколько ограничивала ее удобство использования. На самом деле не переменная полностью, а конфиг "класс", который по сути является префиксом. Но как только префикс был определен, любая переменная может быть использована без измененияpostgresql.conf