Fórum Log #375624

05/10/2009

0

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.


Silveriosepulveda

Silveriosepulveda

Responder

Posts

05/10/2009

Afarias

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:

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+


Responder

Gostei + 0

05/10/2009

Silveriosepulveda

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.


Responder

Gostei + 0

05/10/2009

Facc

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


Responder

Gostei + 0

13/10/2009

Emerson Nascimento

você pode fazer isso através da propriedade BeforeUpdateRecord do DatasetProvider.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar