[firebase-br] Percorrer os campos de uma tabela em uma trigger

Kelver Merlotti kmerlotti em gmail.com
Sex Abr 24 16:25:58 -03 2009


Também tenho interesse nisso...
Que falta num faz um 'FieldByName' :-)
Abraços!

2009/4/24 Ivan Guimarães Meirelles <igmeirelles em gmail.com>:
> 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
>



-- 
Kelver Merlotti
Coordenador Editorial do Portal www.ActiveDelphi.com.br
Contato: kelver em activedelphi.com.br
Google: kmerlotti em gmail.com
Msn: kmerlotti em hotmail.com
Tem um segundo? Então, dá uma olhadinha nisso:
Um site de publicidades, de Portugal, está pagando em euros (quase 3x
mais que em reais) pra quem estiver disposto a:
 * Ler anúncios
 * Visitar sites
 * Clicar em banners
 * Navegar na NET
 * Ler e-mails
 * Convidar novos usuários
O pagamento é feito em cheque! Registra lá!! Não custa nada! ;-)
http://www.publipt.com/pages/index.php?refid=kmerlotti




Mais detalhes sobre a lista de discussão lista