[firebase-br] Percorrer os campos de uma tabela em uma trigger
Sandro
oleber.itajai em gmail.com
Sex Abr 24 16:55:21 -03 2009
Voce faz apenas a trigger before update para pegar o campo antigo e
atualizar na tabela nova.
Não tem o porque varrer a tabela toda, pois o registr modificado não tem
como fugir da trigger.
Se vc deu update nele, a trigger ja vai captar, não precisar ir atraz dos
outros registros, pois quandos eles foram modificados a trigger ja fez o
serviço dela naquele momento.
Entendeu?
Grato
----- Original Message -----
From: "Ivan Guimarães Meirelles" <igmeirelles em gmail.com>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Friday, April 24, 2009 3:29 PM
Subject: [firebase-br] Percorrer os campos de uma tabela em uma trigger
Olá caros colegas "Firebirdianos"...
Eu preciso criar uma trigger que percorra todos os campos da tabela e faça
uma comparação entre o valor novo (new) e o valor anterior (old) a fim de
registrar em outra tabela as mudanças que ocorreram, quando o usuário
executar um update na tabela.
Eu criei uma SP onde passo o nome da tabela como parâmetro e a SP me retorna
todos os campos.
O código da SP está abaixo e funcionando perfeitamente:
-- ***************************************************************
CREATE PROCEDURE LISTA_CAMPOS_TABELA (tabela varchar(93))
returns (campo varchar(93))
as begin
for select
c.rdb$field_name
from rdb$relation_fields c
where lower(c.rdb$relation_name) = lower(:tabela)
order by 1
into
:campo
do
suspend;
end
-- ***************************************************************
Então eu tentei fazer uma trigger da seguinte maneira:
-- ***************************************************************
CREATE TRIGGER TRIGGER_TESTE FOR TABELA_TESTE
ACTIVE BEFORE UPDATE POSITION 0
AS
declare variable campo varchar(93);
begin
for select c.campo from lista_campos_tabela('tabela_teste') c
into :campo
do begin
-- > aqui eu preciso pegar o valor anterior e o novo ...
porém o nome do campo está em :campo
-- > não sei como proceder.
end
end
-- ***************************************************************
Alguém poderia me dar uma idéia ?? estou utilizando Firebird 2.1
Desde já agradeço a atenção dispensada.
______________________________________________
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