Fórum Pessoal uma força neste trigger ? #275321
04/04/2005
0
Estou usando o trigger abaixo p/ saber se o produto é atualizado
para ou p/ menos, só que tambem quando o preco for igual queria colocar um sinal de = signifacaria que ele não sofre reajuste + quando coloco este if a mais da problema
Error Message:
----------------------------------------
Too many concurrent executions of the same request
.
Too many concurrent executions of the same request.
para ou p/ menos, só que tambem quando o preco for igual queria colocar um sinal de = signifacaria que ele não sofre reajuste + quando coloco este if a mais da problema
if (New.preco_venda = Old.preco_venda) then begin Update produtos Set PrAlterado =´=´ Where Codigo =New.codigo; end
Error Message:
----------------------------------------
Too many concurrent executions of the same request
.
Too many concurrent executions of the same request.
CREATE TRIGGER TGPRECO FOR PRODUTOS ACTIVE AFTER UPDATE POSITION 0 AS begin if (Old.preco_venda <> New.preco_venda) then begin if (New.preco_venda > Old.preco_venda) then begin Update produtos Set PrAlterado =´+´ Where Codigo =New.codigo; end if (New.preco_venda < Old.preco_venda) then begin Update produtos Set PrAlterado =´-´ Where Codigo =New.codigo; end end if (New.preco_venda = Old.preco_venda) then begin Update produtos Set PrAlterado =´=´ Where Codigo =New.codigo; end end ^ COMMIT WORK ^ SET TERM ;^
Essistemas
Curtir tópico
+ 0
Responder
Posts
04/04/2005
Maicongabriel
Estou usando o trigger abaixo p/ saber se o produto é atualizado
para ou p/ menos, só que tambem quando o preco for igual queria colocar um sinal de = signifacaria que ele não sofre reajuste + quando coloco este if a mais da problema
Error Message:
----------------------------------------
Too many concurrent executions of the same request
if (New.preco_venda = Old.preco_venda) then begin Update produtos Set PrAlterado =´=´ Where Codigo =New.codigo; end
Me parece que você esta causando um [b:17bec065cd]Loop[/b:17bec065cd] infinito de Updates!
[b:17bec065cd]Veja porque:[/b:17bec065cd] Caso o valor do campo ´preco_venda´ antigo seja igual ao novo valor atribuido ao campo ´preco_venda´, você esta efetuando novamente o comando de Update, para gravar o valor ´=´ no campo ´PrAlterado´ da mesma tabela de produtos!
Ao efetuar este Update novamente, os valores de [b:17bec065cd]Old[/b:17bec065cd] e [b:17bec065cd]New[/b:17bec065cd] são igual, efetuando um novo Update e assim segue ´infinitamente´ até finalizar com:
Too many concurrent executions of the same request
Esta é a minha opinião, posso estar errado, ou não...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)