[firebase-br] Dúvida com trigger before insert
Andrei Luís
compuvale.software em gmail.com
Qua Jan 23 13:59:37 -03 2013
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
>
Mais detalhes sobre a lista de discussão lista