Boas, Por exemplo V. cria um ficheiro igualzinho ao ficheiro de activos (Pessoas_Act e Pessoas_Hist) e no primeiro um trigger AFTER DELETE PessoasACT assim:
Insert Into PessoasHist(ID, Nome, MeioNome, Apelido, CartaoID etc....) Values(Old.ID, Old.Nome, Old.MeioNome, Old.Apelido etc....) Dá para perceber? Senão me diz. Abr. 2009/12/12 Andre Lopes <[email protected]> > 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 > <[email protected]>wrote: > >> >> >> 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 >> >> > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- C/Melhores cumprimentos Mário Agostinho Reis Esta mensagem contém informação de natureza confidencial e é exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano, receber este email agradecemos que não o copie nem o reenvie e que nos notifique do ocorrido através do email de resposta.
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
