[firebase-br] Obter valores das colunas NEW e OLD nas triggers de forma dinâmica

Isael Faria Junior isael em stetika.com.br
Seg Nov 30 11:29:32 -03 2009


eu faço essa trigger de log deste a versão do firebird 1.5  e funciona.
Caso, o Cantu queira publica no site, pode ele pode me falar.
como disse e preciso apenas ter a estrutura da tabela, o que obtido 
atraves de um select .
Mais acho que ficaria mais facil de entender em um artigo do que 
postando somente o codigo da mesma.

Eduardo Jedliczka escreveu:
> No firebird não existe macrosubstituição, mas existe o execute statement
> (que é um comando SQL dentro de uma variável string que pode ser montada
> dinamicamente).
>
> porém é muito perigoso usar o execute statement dentro de uma trigger
> para operações de insert, delete ou update.
>
> Como seu exemplo está aparentemente incompleto e não tem nenhuma
> utilidade prática (pois é só definir um campo como not null com default
> ZERO), não consegui entender exatamente a sua necessidade, mas
> definitivamente, uma abordagem de 7dias da semana, 12 meses do ano ou 31
> dias do mês em campos separados de uma mesma tabela, não me parece ser
> uma modelagem correta (além de ser extremamente repetitivo para se
> trabalhar). Se for este o caso, recomendo remodelar o seu sistema.
>
> porém se esta tabela está com esta estrutura simplesmente para
> simplificar algum relatório ou consulta na tela, sugiro que grave os
> dados da forma correta, e crie uma SP para obter esta "tabela de
> consulta".
>
> outra coisa, qual é a versão do Firebird que você está usando ?
>
> abraço
>
> Eduardo
>
> Em Sáb, 2009-11-28 às 12:26 -0200, Richard Brosler escreveu:
>
>   
>> Olá Pessoal, haveria a possibilidade de obter nas triggers os valores dos
>> campos com os prefixos NEW ou OLD de forma dinâmica dentro de um gatilho.
>>
>> Por exemplo a tabela:
>>
>> condicoes_pgto
>> codigo integer (pk)
>> dia01 integer
>> dia02 integer
>> dia03 integer
>> dia04 integer
>> dia05 integer
>> dia06 integer
>> dia07 integer
>>
>> no gatilho colocaria assim:
>>
>> create trigger trg_condicoes_pgto for condicoes_pgto active before insert
>> position 0 as
>>  declare variable dia integer;
>> begin
>>   dia=1;
>>   while dia<8 do
>>     begin
>>       New."dia0"||dia=coalesce(New."dia0"||dia,0); coloquei dessa forma pois
>> não sei como fazer isso de forma dinâmica
>>       dia=dia+1;
>>     end;
>> end;
>>
>> Na verdade coloquei uma suposição para a utilização, o que estou tentando
>> fazer é uma trigger padrão para poder ser utilizada em qualquer das minhas
>> entidades.
>> Há esse recurso disponível no firebird? tentei com rdb$get_context e
>> rdb$set_context, mas não consegui nada. :s 
>>
>> Abraços, 
>>
>> Richard Brosler.
>>
>>
>> ______________________________________________
>> 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
>>     
>
>
> ______________________________________________
> 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