Em 11 de maio de 2012 15:30, Alessandro Lima <[email protected]>escreveu:
> Tenho um aplicação web java + jdbc + postgresql 8.4
> Criei uma trigger para registrar log de qualquer alteração em certa tabela.
> Mas não encontrei uma forma registrar o usuario neste log, pois o usuario
> da aplicação é diferente do usuario do banco de dados,
> alias todos os usuarios da aplicação utilizam o mesmo usuario do postgres.
>
> Existe alguma forma de passar o usuario como parametro junto com INSERT,
> UPDATE, DELETE?
> Estou utilizando uma gambiarra, adicionando o codigo do usuario no final
> do sql na forma de comentario, exemplo: "delete from tabela where codigo =
> 1 --usuario:2"
>
>
Tem algumas formas de resolver essa questão... vou citar 2 (duas):
1) Usando a GUC "custom_variable_classes" [1] vc pode definir uma classe
tipo "sessao" no seu "postgresql.conf" (nao esqueca de fazer um reload no
processo do servidor) e depois na sua sessao com o banco usar:
bdteste=# SET sessao.usuario TO 'meu_usuario';
SET
bdteste=# SELECT current_setting('sessao.usuario');
current_setting
-----------------
meu_usuario
(1 row)
2) Você pode construir algumas PLs para criar variáveis de sessão (globais)
manipulando tabelas temporárias, ou um memcache, ou até alguma linguagem
que possibilite trabalhar com um hash em memória (tcl, c, etc). Um exemplo
de uso podes encontrar em [2]
[1] http://www.postgresql.org/docs/8.4/static/runtime-config-custom.html
[2] http://pgxn.org/dist/session_variables/0.0.3/
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral