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

Responder a