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

Atenciosamente,
Luiz Carlos
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a