[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