On 25-07-2014 12:18, Flavio Henrique Araque Gurgel wrote:
>>  >>Pretendo fazer essa operação através de trigger
>> Utilizo o Audit trigger 91Plus [1]
>>
>>  >>O problema é capturar o responsável pela alteração, porque quem faz a
>> conexão no banco é um usuário único, definido na aplicação
>> Tive o mesmo problema, como uso jdbc resolvi passando o id do usuário
>> logado como comentário no final da query:
>> UPDATE tabela SET campo = true WHERE id = 1 --ul:5
>> onde ul:5 significa usuáio logado de id 5
>> alterei a a trigger original do audit trigger para capturar em vez do
>> usuário do postgres, capturar o id que vem após a string '--ul:'
>>
>> [1] https://wiki.postgresql.org/wiki/Audit_trigger_91plus
>>
>> Atenciosamente,
>>
>> Alessandro Lima
> 
> Cara, bela ideia essa sua! É um problema recorrente.
> Você poderia até incluí-la nessa página Wiki como um item adicional.
> 

Outra alternativa para esse problema é utilizar variáveis de sessão
(custom options). Ex:

fabrizio=# SELECT current_setting('classe.variavel');
ERROR:  unrecognized configuration parameter "classe.variavel"
fabrizio=# SELECT set_config('classe.variavel', 'valor', false);
 set_config
------------
 valor
(1 row)

fabrizio=# SELECT current_setting('classe.variavel');
 current_setting
-----------------
 valor
(1 row)


Há algum tempo escrevi um extensão [1] pra manipular essas variáveis de
sessão.

Essa necessidade surgiu no passado pelo mesmo motivo, e na época a
aplicação era PHP, então pegamos todo conteúdo da sessao ($_SESSION) e
gravamos na sessão do PostgreSQL após o pg_connect. Com isso temos as
mesmas variáveis da aplicação no banco também. Ajudou bastante ;-)

Att,

[1] http://pgxn.org/dist/session_variables/0.0.4/

-- 
   Fabrízio de Royes Mello         Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a