[firebase-br] erro em trigger

Eduardo Bahiense eduardo em icontroller.com.br
Seg Jan 21 18:58:00 -03 2008


Olá Reijanio

Não precisa. O caso é que você faz operação artmética com QTDE sem 
verificar se o valor passado não é nulo (PRODUTO.estoque + new.qtde).
Quando você colocou o default para zero, resolveu o problema.
Se você tivesse feito PRODUTO.estoque + coalesce(new.qtde,0) também 
daria certo. Da mesma forma se você testasse antes de tudo "IF new.qtde 
IS NOT NUL THEN ..." também daria.

Abs


Eduardo


Reijanio Nunes Ribeiro escreveu:
> gente não sabia que pra usar trigger tinha que colocar um valor default no
> campo, depois que coloquei o campo QTDE default 0 deu certo e atualiza sem
> problemas, alguem sabe me dizer pq isso
> 
> Em 21/01/08, Reijanio Nunes Ribeiro <rnribeiro em gmail.com> escreveu:
>> magno ja ta after insert olha so
>> CREATE TRIGGER ATUALIZAESTOQUE_BI0 FOR D_NFENTRADA
>> ACTIVE AFTER INSERT POSITION 0
>>
>> Em 21/01/08, Magno System < magno em speet.com.br> escreveu:
>>> Será que se você fizesse essa trigger AFTER INSERT não daria ???
>>>
>>> EMPRESA: Marcelo Guimarães Nogueira
>>> NOME FANTASIA: Magno System
>>> ENDEREÇO: Rua Oliveira Leite, 66 - Centro - Passa Quatro - MG
>>> EMAIL: magno em speet.com.br
>>> CNPJ: 07.693.076 /0001-99
>>>
>>> Marcelo Guimarães Nogueira
>>> Magno System (Empresa Desenvolvedora de Software)
>>> ----- Original Message -----
>>> From: "Reijanio Nunes Ribeiro" <rnribeiro em gmail.com >
>>> To: "FireBase" <lista em firebase.com.br>
>>> Sent: Monday, January 21, 2008 3:00 PM
>>> Subject: [firebase-br] erro em trigger
>>>
>>>
>>> pessoal boa tarde estou com um problema e acho q vc'sa podem me ajudar:
>>> seguinte criei uma trigger q atualiza meu saldo em estoque testei no
>>> ibexpert e teve sucesso agora seguinte n acontece nada na tabela de
>>> produtos
>>> poderia me dizer o que pode estar dando errado, a sintase do gatinho é
>>> assim:
>>>
>>> CREATE TRIGGER ATUALIZAESTOQUE_BI0 FOR D_NFENTRADA
>>> ACTIVE AFTER INSERT POSITION 0
>>> AS
>>> begin
>>> UPDATE PRODUTO SET PRODUTO.estoque =  PRODUTO.estoque + new.qtde
>>> WHERE PRODUTO.codigo = new.codprod ;
>>> /* so lembrando que codigo é o campo codigo do produto  da tabela
>>> PRODUTO
>>> e codprod é o codigo do produto da tabela D_NFENTRADA*/
>>> end
>>>
>>> o que poderia estar dando errado que qdo dou o insert na
>>> tabela  D_NFENTRADA
>>> o campo
>>> estoque não é atualizado na tabela PRODUTO
>>>
>>> uso delphi 2006/firebird/dbexpress
>>> desdee ja agradeço
>>> ______________________________________________
>>> FireBase-BR ( www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para editar sua configuração na lista, use o endereço
>>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>> --
>>> No virus found in this incoming message.
>>> Checked by AVG Free Edition.
>>> Version: 7.5.516 / Virus Database: 269.19.6/1230 - Release Date:
>>> 17/1/2008
>>> 16:59
>>>
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR ( www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para editar sua configuração na lista, use o endereço
>>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista