Я хочу сохранить идентификатор пользователя в пользовательской переменной сеанса и использовать его (чтение) в процедурах триггера для авторизации действий пользователя. Я нашел что-то вроде этого:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
и это похоже на работу - я думал, что «myapp.user» должен быть объявлен в файле .conf, но кажется, что я могу создавать переменные сеанса на лету (я не изменил файл .conf вообще).
Есть ли недостаток в том, чтобы делать это?
postgresql
postgresql-9.4
user606521
источник
источник
myapp.user
которое должно быть объявлено,postgresql.conf
было снято в 9.2 или 9.1Ответы:
До версии 9.2 вам нужно было добавить свою переменную класса в
custom_variable_classes
параметрpostgresql.conf
, например:В 9.2 это требование было удалено :
Итак, начиная с 9.2, вы можете просто установить свою переменную пользовательского класса, как вы делаете в настоящее время, не нужно беспокоиться об изменении
postgresql.conf
.источник
Если вам просто нужно сохранить идентификатор пользователя, см. Как получить идентификатор пользователя ОС в PostgreSQL
Это довольно просто и не требует специальной настройки.
источник
В таких случаях я хотел бы создать функцию plperl:
Преимущество этого в том, что он работает и в операторах sql, например:
источник