[firebase-br] Deadlock update conflicts

Gladiston Santana gladiston em vidy.com.br
Qua Jan 16 09:36:11 -03 2013


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/061214.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
>



Mais detalhes sobre a lista de discussão lista