Log
Estou precisando criar um log das alterações das tabelas de um programa, ou seja a cada inserção, alteração ou exclusão relatar em uma tabela do banco de dados.
Se alguém tiver alguma idéia de como fazer agradeço.
Estou usando DBExpress e firebird 2.0.
Se alguém tiver alguma idéia de como fazer agradeço.
Estou usando DBExpress e firebird 2.0.
Silveriosepulveda
Curtidas 0
Respostas
Afarias
05/10/2009
Uma *opção* é criar triggers para AFTER insert,update,delete para a tabela em questão e gravar os valores desejados em uma tabela de log.
Algo assim por exemplo:
T+
Algo assim por exemplo:
create trigger tr_log_tabela for tabela after insert or update or delete as declare id_rec integer; declare acao varchar(10); begin if (inserting) then begin acao=´INSERT´; id_rec=new.id; end else begin id_rec = old.id; if (updating) then acao=´UPDATE´; else acao=´DELETE´; end insert into log (id, nome_tabela, id_registro, acao, data_hora) values (gen_id(gn_log_id,1), ´TABELA´, :id_rec, :acao, current_timestamp); end ^
T+
GOSTEI 0
Silveriosepulveda
05/10/2009
Show, esse á uma solução bem viável.
Mas estava pensando em algo pelo delphi, que gerasse esse log automaticamente, em qualquer que fosse a tabela alterada, sei que é meio complexo, mas de repente tem jeito.
Obrigado pela dica.
Mas estava pensando em algo pelo delphi, que gerasse esse log automaticamente, em qualquer que fosse a tabela alterada, sei que é meio complexo, mas de repente tem jeito.
Obrigado pela dica.
GOSTEI 0
Facc
05/10/2009
Eu nunca usei, mas existe o componente UserControl, que além de controlar acessos no sistema, ele controla as alterações no banco tbm, grava nome do usuário, campo que alterou, valor antes e após a alteração
GOSTEI 0
Emerson Nascimento
05/10/2009
você pode fazer isso através da propriedade BeforeUpdateRecord do DatasetProvider.
GOSTEI 0