Desde já obrigado a ambos, pois deram-me duas ideias.

Realmente não sei muito bem o que adoptar, por agora. Já tenho a base de
dados terminada e não me apetecia mexer muito mais nela, em relação á
auditoria tenho os 3 campos que referi em todas as tabelas.

Com a solução da tabela única fica tudo centralizado, tem o senão de ser
mais difícil fazer SELECT's ao campo DADOS, com a solução de espelhar todas
as tabelas é mais fácil fazer SELECT's, mas vai-me dar mais um dia de
trabalho espelhar todas as tabelas...

Vou pensar neste assunto seriamente enquanto durmo...

Mais uma vez obrigado.


Cumprimentos,


On Sat, Dec 12, 2009 at 12:24 AM, Lucas Souza <lucassouzadav...@gmail.com>wrote:

>
>
> 2009/12/11 Tiago Adami <adam...@gmail.com>
>
>> 2009/12/11 Andre Lopes <lopes80an...@gmail.com>:
>> > Boas,
>> >
>>
>> ...
>> >
>> > A minha pergunta... Como fazem auditoria a DELETE's?
>>
>
>
> Oi Andre, vou te passar um exemplo da faculdade :) (foi feito para o
> Oracle, mas espero que te de uma ideia e te ajude ;)
>
>
> CREATE TABLE AUDITORIA (
> TABELA VARCHAR2(50) NOT NULL,
> DATA DATE NOT NULL,
> OPERACAO CHAR(1) NOT NULL,
> USUARIO VARCHAR2(50) NOT NULL,
> DADOS VARCHAR2(2000) NOT NULL
> );
>
>
> CREATE TRIGGER TRG_AUDIT_EMPREGADO
> AFTER DELETE OR INSERT OR UPDATE
> ON EMPREGADO
> FOR EACH ROW
> DECLARE
>   DADOS VARCHAR2(2000);
>   BEGIN
>    IF DELETING THEN
>      DADOS := 'CÓDIGO : '|| :OLD.CODEMP || ‘ NOME : '|| :OLD.NOME ||
> ‘ SALÁRIO : '|| :OLD.SALARIO;
>      INSERT INTO AUDITORIA VALUES('EMPREGADO',SYSDATE,'D',USER,DADOS);
>    END IF;
>
>   IF INSERTING THEN
>     DADOS := 'CÓDIGO : '|| :NEW.CODEMP ||       ‘ NOME : '|| :NEW.NOME
> ||       ‘ SALÁRIO : '|| :NEW.SALARIO;
>     INSERT INTO AUDITORIA VALUES('EMPREGADO',SYSDATE,'I',USER,DADOS);
>    END IF;
>
>   IF UPDATING THEN
>     DADOS := 'CÓDIGO OLD: '|| :OLD.CODEMP ||      ‘ NOME OLD: '|| :OLD.NOME
> || ‘ SALÁRIO OLD: '|| :OLD.SALARIO ||
>        'CÓDIGO NEW: '|| :NEW.CODEMP ||     ‘ NOME NEW: '|| :NEW.NOME
> ||         ‘ SALÁRIO NEW: '|| :NEW.SALARIO;
>     INSERT INTO AUDITORIA VALUES('EMPREGADO',SYSDATE,'U',USER,DADOS);
>    END
> IF;
> 32
> END;
>
>
> --
> Lucas de Souza D'Ávila
> Graduando em Sistemas de Informação - CV Lattes:
> http://lattes.cnpq.br/9245658982061645
>
> http://twitter.com/lucasdsd
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a