2009/12/11 Tiago Adami <[email protected]>

> 2009/12/11 Andre Lopes <[email protected]>:
> > 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a