[firebase-br] new old em triggers

Cássio pajolista em gmail.com
Sáb Set 16 18:56:50 -03 2006


boa noite pessoal eu estou com o seguinte problema eu pretendo gerar um 
critica em minhas tabelas dos campos que são modificados pelos usuários, o 
lendo o livro bancanissimo do Cantu { Firebird Essencial } vi uma consulta 
que resulta todos os campos e demais informações de uma determinada tabela 
..  o que eu pretendo fazer é criar um gatilho na triggers no evento before 
edit comparando os campos velhos e novos para saber se eles são diferentes e 
caso sejam fazer a inserção da informação modificada em uma tabela de 
critica por exemplo o código segue abaixo

CREATE TRIGGER ST01_C0001_BU01 FOR ST01_C0001
INACTIVE BEFORE UPDATE POSITION 0
AS
  declare variable Campo varchar (31);
  declare variable ID varchar (31);
begin
   id=old.id_c0001;
   for select
             r.rdb$field_name
             from rdb$relation_fields r
             join rdb$fields f on
                f.rdb$field_name = r.rdb$field_source
             join rdb$types t on
                f.rdb$field_type = t.rdb$type
             where ( (r.rdb$relation_name = 'ST01_C0001'  )  and
                   (t.rdb$field_name = 'RDB$FIELD_TYPE' ) )  into:campo do
       begin
          execute statement
               'if (old.campo <> new.campo ) then
                   insert into Tabela de Critica ('||'Critica por ex'||') 
values (old.'||:CAMPO||')';

       end


end



0 problema é que o campo old.campo não é reconhecido na execução do gatilho 
e nem a condição if .. o que posso fazer para acessar este old.campo dentro 
de uma trigger e executar uma condição if  ??  pessoal bom final para todos 
vcs  e desde já Obrigado ... 





Mais detalhes sobre a lista de discussão lista