[firebase-br] RES: Deadlock update conflicts

Jonas Rodrigo Pacheco jonas.pacheco em tecnicon.com.br
Qua Jan 16 13:33:39 -03 2013


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

-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Gladiston Santana
Enviada em: quarta-feira, 16 de janeiro de 2013 09:36
Para: FireBase
Assunto: Re: [firebase-br] Deadlock update conflicts

Existem comandos SQL que trocam o isolamento e transação apenas use-a.
Se não conseguir usá-los em trigger e realmente pode haver uma limitação quanto a isso, pois a trigger em geral herda o mesmo isolamento de quem a disparou. Então voce talvez tenha de modificar sua trigger  para disparar uma SP e dentro da SP voce trata o isolamento adequado, contudo, o isolamento deve levar em consideração as transações correntes e se todas as demais tem nowait então a própria SP quebraria a conexão de outros pelo tempo em que estivesse rodando até o commit. Leve isso em consideração.

E se ainda assim o FB não te deixar mudar o isolamento por causa da herança da conexão então a alternativa que vejo de imediato é disparar a SP diretamente, sem envolvimento da trigger.

inte+


Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br




Em 15 de janeiro de 2013 17:15, Jonas Rodrigo Pacheco < jonas.pacheco em tecnicon.com.br> escreveu:

> Senhores,
>
> A conexão da aplicação com o Firebird é do tipo nowait, pois em caso 
> de concorrência entre os usuários, é importante que ocorra o deadlock.
>
> Nesta mesma estrutura, usamos algumas triggers para manter o saldo de 
> estoque atualizado, porém elas raramente apresentam o erro:
> Deadlock
> update conflicts witch concurrent update concurrent transaction number 
> is XXXXXX At trigger 'T_SALDO_XXXXX'
>
> Porém, quando se trata de uma trigger de saldo, é importante que ela 
> aguarde e/ou fique tentando executar o comando para manter-se o saldo 
> consolidado.
>
> Alguém possui alguma sugestão/alternativa para essa situação? Por 
> favor, disponibilize um exemplo.
>
> Pensei em implementar algo parecido com o que está no link:
> http://mail.firebase.com.br/pipermail/lista_firebase.com.br/2009-May/0
> 61214.html, mas não ficou muito claro se é possível/como  implementar 
> isso dentro de uma trigger do Firebird.
>
> Desde já agradeço a atenção de todos!
>
> Jonas R. 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