[firebase-br] to precisando muito de uma ajuda com uma trigger

Ederson R. F. Lima ed.rodrigo em gmail.com
Qui Jun 3 11:47:12 -03 2010


Qual a mensagem de erro que você recebe?

Bom, provavelmente quando você aplica o update na tabela estoque, uma outra
trigger de update, para essa mesma tabela, é ativada. Assim, o banco entra
um loop infinito de updates, pois ele chama uma trigger após outra. Não
posso afirmar que seja isso, pois não conheço a estrutura do seu banco e,
menos ainda a mensagem de erro que você recebe.

Por hora é isso,
Att,

Em 1 de junho de 2010 11:27, Reijanio Nunes Ribeiro
<rnribeiro em gmail.com>escreveu:

> quero que ao alterar o status da ordem de esrviço ela altere a quantidade,
> de produtos reservados
>
> Em 01/06/10, Ederson R. F. Lima <ed.rodrigo em gmail.com> escreveu:
> >
> > O que você quer que sua Trigger faça!?
> > Qual a mensagem de erro que você recebe?
> >
> > Coloque essas informações e será bem mais fácil te ajudar.
> >
> > Att,
> >
> > 2010/6/1 Reijanio Nunes Ribeiro <rnribeiro em gmail.com>
> >
> > > a sintaxe é a seguinte
> > >
> > > CREATE OR ALTER TRIGGER TRG_STATUS_OS FOR D_SERVICO_OS
> > > ACTIVE BEFORE UPDATE POSITION 0
> > > as
> > > declare variable v_status char(1);
> > > declare variable codprod varchar(18);
> > > declare variable qtde numeric(10,2);
> > > declare variable local char(3);
> > > declare variable emp integer;
> > > begin
> > > codprod = new.codprod;
> > > qtde = new.qtde;
> > > local = new.cod_local;
> > > emp = new.cod_emp;
> > >
> > > select STATUS from c_ordemservico
> > > where codigo = new.cod_os
> > > into :v_status;
> > >
> > > select d.codprod, d.qtde from d_servico_os d
> > > where d.cod_os = new.cod_os
> > > into :codprod,:qtde;
> > >
> > > if (:v_status = 'A')then
> > >    update estoque e set
> > >    e.qtde_reserv = e.qtde_reserv + :qtde,
> > >    e.saldo = e.qtde_disp - e.qtde_reserv
> > >    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
> > > :emp;
> > >
> > > if (:v_status = 'F')then
> > >    update estoque e set
> > >    e.qtde_reserv = e.qtde_reserv - :qtde,
> > >    e.saldo = e.qtde_disp - e.qtde_reserv
> > >    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
> > > :emp;
> > >
> > > if (:v_status = 'C')then
> > >    update estoque e set
> > >    e.qtde_reserv = e.qtde_reserv - :qtde,
> > >    e.saldo = e.qtde_disp - e.qtde_reserv
> > >    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
> > > :emp;
> > >
> > >    end
> > >
> > > na realidade acho que o erro é que nem sempre mexo nos itens na
> realidade
> > o
> > > que deve lterar a quantidade reservada é esse v_status que fica na
> tabela
> > > c_ordem serviço se algume puder me ajudar a refazer essa trigger
> ficarei
> > > grato
> > > ______________________________________________
> > > 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
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> >
> >
> > --
> > - Éderson R. F. Lima
> > -- Engenharia da Computação / 9º Termo
> > --- Araçatuba/SP
> > ______________________________________________
> > 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
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
- Éderson R. F. Lima
-- Engenharia da Computação / 9º Termo
--- Araçatuba/SP



Mais detalhes sobre a lista de discussão lista