[firebase-br] log de ações em tabelas

Valdir Marcos valdir.marcos em ig.com.br
Sex Out 24 11:41:09 -03 2008


Bom dia.

Tente usar Execute Statement com um select na tabela RDB$RELATION_FIELDS
mesclado a "NEW" e "OLD"... se der certo, coloque o resultado aqui na lista
para ajudar o pessoal que vive perguntando sobre logs.

Um abraço,

Valdir



Em 24/10/08, Daniel Bastos <danbastos em gmail.com> escreveu:
>
> Cara, até tem como fazer um loop nos campos fazendo um select na
> tabela RDB$RELATION_FIELDS e utilizando um cursor ou um for, mas não
> acho que vc vá conseguir utilizar os objetos "NEW" e "OLD". E ai não
> adiantaria nada para o seu caso.
>
>
> 2008/10/22 Luis Otavio <luisotavio.madureira em gmail.com>:
> > Caros colegas criei uma trigger para gerenciar ações realizadas em campos
> da
> > tabela (conforme script abaixo), mas acho que pode ser bem mais reduzida
> se
> > houvesse um meio de fazer um looping pelos campos da tabela.
> > Poderiam me ajudar?
> >
> > SCRIPT ABAIXO:
> > CREATE OR ALTER TRIGGER CLIENTES_AU0 FOR CLIENTES
> > ACTIVE AFTER UPDATE POSITION 0
> > AS
> >  declare variable s char(80);
> >  declare variable z char(80);
> > begin
> >  /* ALTERAÇÃO NO CAMPO NOME */
> >  if (
> >      (new.nome <> old.nome) or
> >      (old.nome is null and new.nome is not null) or
> >      (old.nome is not null and new.nome is null)
> >     )
> >  then
> >  begin
> >  if (old.nome is null) then s = 'vazio'; else s = old.nome;
> >  if (new.nome is null) then z = 'vazio'; else z = new.nome;
> >  insert into
> >
> log(log.codigo,log.codigo_programa,log.codigo_usuario,log.datahora_acao,LOG.tipo_acao,log.acao)
> >  VALUES (null, 'A0100','2',current_timestamp ,'ALTERACAO','NOME de:
> '||:s||'
> > para: '||:z);
> >  end
> >  /* ALTERAÇÃO NO CAMPO FANTASIA */
> > if (
> >      (new.fantasia <> old.fantasia) or
> >      (old.fantasia is null and new.fantasia is not null) or
> >      (old.fantasia is not null and new.fantasia is null)
> >    )
> >  then
> >  begin
> >  if (old.fantasia is null) then s = 'vazio'; else s = old.fantasia;
> >  if (new.fantasia is null) then z = 'vazio'; else z = new.fantasia;
> >  insert into
> >
> log(log.codigo,log.codigo_programa,log.codigo_usuario,log.datahora_acao,LOG.tipo_acao,log.acao)
> >  VALUES (null, 'A0100','2',current_timestamp ,'ALTERACAO','FANTASIA de:
> > '||:s||' para: '||:z);
> >  end
> >  /* ALTERAÇÃO NO CAMPO CEP */
> > if (
> >      (new.cep <> old.cep) or
> >      (old.cep is null and new.cep is not null) or
> >      (old.cep is not null and new.cep is null)
> >    )
> >  then
> >  begin
> >  if (old.cep is null) then s = 'vazio'; else s = old.cep;
> >  if (new.cep is null) then z = 'vazio'; else z = new.cep;
> >  insert into
> >
> log(log.codigo,log.codigo_programa,log.codigo_usuario,log.datahora_acao,LOG.tipo_acao,log.acao)
> >  VALUES (null, 'A0100','2',current_timestamp ,'ALTERACAO','CEP de:
> '||:s||'
> > para: '||:z);
> >  end
> > ..... ASSIM ATÉ O ÚLTIMO CAMPO.
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
>
> --
> Abs
> Daniel A. Bastos
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista