Em 11/05/2012 15:30, Alessandro Lima 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" > Prezado Alessandro,
Tive o mesmo problema, todos os usuários acessando o banco com o mesmo usuário do banco. Depois de me bater muito atras de uma solução resolvi fazer uma tabela q no log da aplicação insere um registro com o nome do usuário na aplicação e o ID do processo: CREATE TABLE senda.sis_01_08_a6 ( procpid integer, usuario_banco character varying(60) DEFAULT "current_user"(), tp_acesso integer, usuario character varying(60) DEFAULT "current_user"(), dt_inicio timestamp without time zone DEFAULT now(), dt_fim timestamp without time zone DEFAULT now(), id serial NOT NULL, versao_app character varying(60) DEFAULT '0022011'::character varying, CONSTRAINT sis_01_08_a6_id_pkey PRIMARY KEY (id) ); aí criei uma função q recupera o usuário pelo PID: CREATE OR REPLACE FUNCTION senda.current_user_pid() RETURNS character varying AS $BODY$ SELECT COALESCE((SELECT usuario FROM senda.sis_01_08_a6 WHERE procpid = pg_backend_pid() ORDER BY id DESC LIMIT 1),CAST(CURRENT_USER AS VARCHAR)); $BODY$ LANGUAGE sql VOLATILE; Coloquei como default do campo usuario. Já tá no ar a 3 anos e nunca tive problemas, o unico cudado: após algum tempo o procpid se repete, então tem q apagar a acesso mais antigo com o mesmo codigo. Espero ter ajudado em alguma coisa. -- Irineu Raymundo Programador/Consultor Técnico Senda Engenharia de Dados Ltda. _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
