Desejo armazenar o ID do usuário na variável de sessão personalizada e usá-lo (ler) nos procedimentos do acionador para autorizar ações do usuário. Eu encontrei algo assim:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
e parece funcionar - eu pensei que "myapp.user" deveria ser declarado no arquivo .conf, mas parece que eu posso criar variáveis de sessão rapidamente (eu não mudei o arquivo .conf).
Existe alguma desvantagem de fazer assim?
postgresql
postgresql-9.4
user606521
fonte
fonte
myapp.user
deve ser declarado nopostgresql.conf
foi removido em 9.2 ou 9.1Respostas:
Antes da versão 9.2, você precisava adicionar sua variável de classe personalizada ao
custom_variable_classes
parâmetropostgresql.conf
, como:Na 9.2, este requisito foi removido :
Portanto, desde a 9.2, você pode apenas definir sua variável de classe personalizada como está fazendo atualmente, não precisa se preocupar em mudar
postgresql.conf
.fonte
Se você apenas precisar armazenar o ID do usuário, consulte Como obter o ID do usuário do SO no PostgreSQL
É bem simples e não requer configuração personalizada.
fonte
Para casos como esse, gosto de criar uma função plperl como esta:
A vantagem disso é que ele também funciona em instruções sql, por exemplo:
fonte