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

Responder a