[firebase-br] Problema ao migrar para FB 2.1.2

Eduardo Jedliczka jedyfb em gmail.com
Qua Jun 17 15:34:13 -03 2009


Na verdade isto era um bug das versões 1.x.  Não se pode usar o nome de
um campo sem o seu escopo, já que isto pode ser ambíguo.

Se trocar pelas variáveis de contexto new e old funcionarão
corretamente.

Abraço

Eduardo

Em Qua, 2009-06-17 às 15:21 -0300, Andrei Luís escreveu:

> Boa tarde,
> 
> Estou começando a migrar minhas bases pra FB 2.1.2 e já na primeira estou
> com problemas.
> 
> Lendo o artigo 'Migrando um bd para o FB 2.1' que está no site, resolvi
> adotar o método B. Bem, extraí o metadata no FB 1.5.5, fui rodar no IBExpert
> sobre o FB 2.1.2, e pra minha surpresa recebi msg de erro na criação de três
> triggers simples, que antes rodavam perfeitamente:
> 
> SET TERM ^ ;
> 
> /* Trigger: NOTASFISCAISITENS_AD0 */
> CREATE TRIGGER NOTASFISCAISITENS_AD0 FOR NOTASFISCAISITENS
> ACTIVE AFTER DELETE POSITION 0
> AS
> declare variable wsequencia integer;
> declare variable wregistro_id integer;
> begin
>    wsequencia = 1;
>    for select registro_id from notasFiscaisItens where
> notafiscal_id=old.notafiscal_id order by sequencia into wregistro_id do
>       begin
>          update notasFiscaisItens set sequencia = :wsequencia where
> registro_id=:wregistro_id;
>          wsequencia = wsequencia+1;
>       end
>    delete from pedidosItensFaturados
>          where notafiscalitem_id=notasFiscaisItens.registro_id;
> *********** aqui ocorre erro dizendo que a coluna registro_id não existe
>    if (old.pedidoitem_id is null) then
>       begin
>          delete from produtoshist where
> produtoshist.nota_fiscal_item_id=old.registro_id;
>       end
> end
> ^
> 
> /* Trigger: NOTASFISCAIS_BD0 */
> CREATE TRIGGER NOTASFISCAIS_BD0 FOR NOTASFISCAIS
> ACTIVE BEFORE DELETE POSITION 0
> as
> begin
>    delete from notasfiscaisitens
>       where notasfiscaisitens.notafiscal_id=notasfiscais.registro_id;
> *********** aqui ocorre erro dizendo que a coluna registro_id não existe
> end
> ^
> 
> /* Trigger: ORCAMENTOS_BD0 */
> CREATE TRIGGER ORCAMENTOS_BD0 FOR ORCAMENTOS
> ACTIVE BEFORE DELETE POSITION 0
> as
> begin
>    delete from orcamentositens
>       where orcamentositens.orcamento_id=orcamentos.registro_id;
>    delete from pedidositens
>       where pedidositens.orcamento_id=orcamentos.registro_id;   ***********
> aqui ocorre erro dizendo que a coluna registro_id não existe
> end
> ^
> 
> SET TERM ; ^
> 
> 
> 
> Bem, pelo que vi, se trocar o nome da tabela que referencia o campo pela
> variável de contexto old, o código é aceito.
> 
> Pergunta 1: essa é uma característica é nova no FB 2.x?
> Pergunta 2: pelo que entendo isso não vai mudar a funcionalidade das
> triggers, correto?
> 



Mais detalhes sobre a lista de discussão lista