2009/12/11 Andre Lopes <[email protected]>:
> Boas,
>
> Já faço bases de dados a algum tempo, mas no que toca á auditoria só tenho
> usado para controlar os INSERT's e UPDATE's, criando 3 campos adicionais em
> cada tabela:
>
> id_utilizador_insert
> id_utilizador_update
> data_ult_actual
>
> No entanto necessitava de criar um sistema para poder ver os DELETE's feitos
> na base de dados...
>
> A minha pergunta... Como fazem auditoria a DELETE's?

Buenas,

Esta é mais uma daquelas perguntas em que a resposta é *não existe
receita pronta*. Depende do nível de auditoria que tu queres
implementar. Para manter um log de auditoria completo, _eu_ gero uma
tabela *espelho*_ contendo todos os campos da tabela em que se deseja
fazer o log, adicionando pelo menos 3 colunas: nome de usuário, data e
hora e tipo de comando (DELETE ou UPDATE ou INSERT).

Crio então 3 TRIGGERS na tabela principal: uma para _BEFORE_ DELETE,
uma para _BEFORE_ UPDATE e uma para _AFTER_ INSERT. Cada TRIGGER
alimenta a tabela espelho, como você pode ver, até nos inserts.

NOTA: Uso pouco este esquema de auditoria, pois o tamanho do banco
praticamente duplica ou triplica (se usado em todas as tabelas) e
dependendo da operação existe uma queda sensível de desempenho. Use
com cautela, preferencialmente apenas em tabelas que armazenem dados
sensíveis onde se justifique este tipo de auditoria.

-- 
TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a