[firebase-br] RES: RES: Deadlock update conflicts

Kelver Merlotti kmerlotti em gmail.com
Sex Jan 18 12:17:36 -03 2013


Não deu certo com autonomous transaction e execute statement como o Cantu
disse?
Enfim, criar o diário é uma alternativa, mas pode ser custoso pois todos os
pontos do sistema que envolvem estoque teriam de olhar para esse diário,
certo?
Ou então você pode montar uma fila de recálculo, registrando o IDProd,
Operacao (+/-), Qtde. Aí você teria um serviço no server, por exemplo, que
fique monitorando a fila e somando/subtraindo do estoque conforme a tabela.
Mas isso é mais para ambientes muito críticos, com muita concorrência...
pelo que você comentou, acho que não é o seu caso, visto que isso acontece
raramente.
Um abraço,

*Kelver Merlotti*
Gerente de Treinamentos da Embarcadero do Brasil
Coordenador Editorial da Active Delphi
Twitter: http://www.twitter.com/kmerlotti


2013/1/18 Jonas Rodrigo Pacheco <jonas.pacheco em tecnicon.com.br>

> A única solução/alternativa é mudar o modo de isolamento da transação para
> WAIT?
>
> Pensamos em criar uma tabela com um "DIÁRIO" de estoque, desta forma as
> triggers de saldo fariam apenas inserts (eliminando a possibilidade de
> concorrência).
>
> Jonas Rodrigo Pacheco
>
> -----Mensagem original-----
> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Carlos H.
> Cantu
> Enviada em: quarta-feira, 16 de janeiro de 2013 14:32
> Para: FireBase
> Assunto: Re: [firebase-br] RES: Deadlock update conflicts
>
> O FB 2.5 suporta transação autônoma no "execute statement", mas ela tem
> sempre o mesmo isolamento da transação original.
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br - www.firebirdnews.org www.warmboot.com.br -
> blog.firebase.com.br
>
> KM> Boa tarde Jonas!
> KM> Acho que você não conseguirá fazer isso, pois a SP entra no mesmo
> KM> contexto transacional em que foi disparada e, até onde sei, ainda
> KM> não existe transação autônoma no FB.
> KM> Minha sugestão é fazer a trigger chamar a SP que atualiza o saldo e,
> KM> no final dela, fazer algo como:
>
> KM> WHEN ANY DO --tratamento de exceção
> KM> BEGIN
> KM>   Sleep(1000); -- usa alguma UDF pra segurar o processo por algum tempo
> KM>   -- aqui, ou você chama de novo a SP ou bota o produto
> KM>   -- numa fila de recálculo pra processa-lo mais tarde END
>
> KM> Um abraço,
>
> KM> *Kelver Merlotti*
> KM> Gerente de Treinamentos da Embarcadero do Brasil Coordenador
> KM> Editorial da Active Delphi
> KM> Twitter: http://www.twitter.com/kmerlotti
>
>
> KM> 2013/1/16 Jonas Rodrigo Pacheco <jonas.pacheco em tecnicon.com.br>
>
> >>
> >> Obrigado Gladiston Santana!
> >>
> >> 'Manipular' o modo de isolamento da transação dentro de uma store
> >> procedure, alguém tentou algo do gênero?
> >>
> >> Jonas Rodrigo Pacheco
>
>
> ______________________________________________
> 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
>



Mais detalhes sobre a lista de discussão lista