[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