On 26-01-2015 19:45, Luiz Carlos L. Nogueira Jr. wrote: > Pessoal, > Peguei umas idéias na internet e fiz uma auditoria de DDLs > > CREATE SCHEMA audit; > > CREATE TABLE audit.Auditoria ( > Data TIMESTAMP, > Usuario varchar(50) , > Aplicacao varchar(50), > IP varchar(50), > Query varchar(500) > ); > > CREATE OR REPLACE FUNCTION audit.fn_ddl_trigger() > RETURNS event_trigger > LANGUAGE plpgsql > AS $$ > BEGIN > insert into audit.Auditoria > (Data, > Usuario, > Aplicacao, > IP, > Query) > values > (current_timestamp, > session_user, > (SELECT setting FROM pg_settings WHERE name = 'application_name') , > inet_client_addr(), -- client_addr > current_query()); > END; > $$; > > CREATE EVENT TRIGGER ddl_trigger ON ddl_command_start > EXECUTE PROCEDURE audit.fn_ddl_trigger(); > > > Só que queria inserir na tabela Auditoria, o nome da tabela e a ação > executada (DROP, CREATE, etc). > Na versão original essas variáveis aparecem na current_query() mas queria > em colunas separadas. > Queria também o usuário de SO que executou, > > Tem como? Alguma variável de ambiente, da trigger, etc >
Já deu uma olhada em: http://www.postgresql.org/docs/current/static/plpgsql-trigger.html#PLPGSQL-EVENT-TRIGGER Att, -- 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
