[firebase-br] Dúvida com trigger before insert

Andrei Luís compuvale.software em gmail.com
Qua Jan 23 16:18:07 -03 2013


Oi Washington,

Não vai resolver. Coloquei essa mesma questão na lista internacional do
Firebird, e recebi uma resposta. Neste caso estou dentro da trigger Before
Insert, tentando fazer um Select para pegar o registro que está sendo
gravado, mas que ainda não o foi (Before Insert), logo o Select vai
retornar um resultset vazio.

Abraço.

[]s
Andrei


Em 23 de janeiro de 2013 15:15, NextCorp <nextcorp em nextcorp.com.br>escreveu:

> Oi Andrei
>
> Já tentou inicializar as variavéis.
>
> abraço
>
> Washington
>
> -----Mensagem Original----- From: Andrei Luís
> Sent: Wednesday, January 23, 2013 1:59 PM
> To: Firebase
> Subject: Re: [firebase-br]Dúvida com trigger before insert
>
>
> Aff, desculpem, esqueci de mencionar, estou usando FB 2.5.1 64bits no
> Windows 7 64bits.
>
> []s
> Andrei
>
>
> Em 23 de janeiro de 2013 12:17, Andrei Luís
> <compuvale.software em gmail.com>**escreveu:
>
>  Boa tarde a todos,
>>
>> Estou com uma dúvida quanto ao funcionamento de triggers before insert.
>>
>> Estou criando uma trigger para calcular os impostos dos itens das notas
>> fiscais. Esta trigger é before insert na tabela dos itens.
>>
>> O problema é que o select que deveria trazer as infos da tabelas diversas
>> está trazendo tudo null, se rodo o select por fora da trigger, depois que
>> a
>> mesma é acionada, o mesmo select traz todas as infos corretamente. Parece
>> que tem algo a ver com as transações, será?
>>
>> Abaixo está a trigger modificada que fiz para testar, o calculo
>> new.subtotal = new.qtde * new.valor funciona. O insert também funciona,
>> mas
>> os campos que estão recebendo valores depois do select estão ficando todos
>> null.
>>
>> Alguém dá uma luz?
>>
>> SET TERM ^ ;
>>
>> CREATE OR ALTER TRIGGER NOTASFISCAISITENS_BI0 FOR NOTASFISCAISITENS
>> ACTIVE BEFORE INSERT POSITION 0
>> as
>> declare variable wbaseicm dinheiro;
>> declare variable wcfoptemp integer;
>> declare variable wnatureza_temp varchar(80);
>> declare variable wnrnf_temp integer;
>> declare variable wcliente_temp varchar(100);
>> declare variable wuf_temp char(2);
>> declare variable wncm_temp integer;
>> begin
>>    new.subtotal = new.qtde * new.valor;
>>    insert into new_table (nfi_id) values (new.registro_id);
>>    Select n.baseicm, n.registro_id, n.descricao, nf.nrnf, a.nome,
>> uf.sigla, cf.codfiscal
>>      from notasfiscaisitens        nfi
>>      left join pedidositens        pi on pi.registro_id =
>> nfi.pedidoitem_id
>>      left join orcamentos          o  on o.registro_id  = pi.orcamento_id
>>      left join produtos                 p  on p.registro_id  =
>> nfi.produto_id
>>      left join notasfiscais             nf on nf.registro_id =
>> nfi.notafiscal_id
>>      left join naturezas                n  on n.registro_id  =
>> nf.natureza_id
>>      left join agenda              a  on a.registro_id  = nf.cliente_id
>>      left join uf                     on uf.sigla=a.uf
>>      left join classificacaofiscal cf on
>> cf.registro_id=p.**classificacaofiscal_id
>>     where nfi.registro_id=new.registro_**id
>>      into :wbaseicm, :wcfoptemp, :wnatureza_temp, :wnrnf_temp,
>> :wcliente_temp, :wuf_temp, :wncm_temp;
>>    new.cfop_temp = :wcfoptemp;
>>    new.natureza_temp = :wnatureza_temp;
>>    new.desconto = (new.Valor) * (:wdescontopercentual/100);
>>    new.nrnf_temp = :wnrnf_temp;
>>    new.cliente_temp = :wcliente_temp;
>>    new.uf_temp = :wuf_temp;
>>    new.ncm_temp = :wncm_temp;
>>
>>
>> end
>> ^
>>
>>
>> SET TERM ; ^
>>
>>
>> []s
>> Andrei
>>
>>  ______________________________**________________
> 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<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>
>
>
> -----
> Nenhum vírus encontrado nessa mensagem.
> Verificado por AVG - www.avgbrasil.com.br
> Versão: 2013.0.2890 / Banco de dados de vírus: 2639/6052 - Data de
> Lançamento: 01/23/13
>
>
>
> ______________________________**________________
> 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<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



Mais detalhes sobre a lista de discussão lista