[firebase-br] Deadlock on execute procedure
Carlos H. Cantu
listas em warmboot.com.br
Quarta Outubro 27 20:22:19 -03 2021
WAIT apenas faz esperar pela decisão da outra transação, mas se a
outra transação der commit ao invés de rollback, vai dar update
conflict do mesmo jeito.
Sugiro que leia o artigo que te mandei no email anterior.
[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
CMvl> Não estou a usar datawares.
CMvl> Estou usando Delphi a acessando as bds do firebird através das componentes IBX.
CMvl> Fiz um teste e se usar na transação os parâmetros:
CMvl> Read_committed
CMvl> No_rec_version
CMvl> E sendo que assim o parâmetro wait está implícito (testei e
CMvl> está se facto), havendo um update concorrente com outra
CMvl> transação, esta 2.ªtransacao deveria esperar que a 1.a faça o
CMvl> commit, mas não, está a dar erro.
CMvl> Será que isto apenas acontece se estivermos a falar de
CMvl> instâncias diferentes, ou seja, o mesmo programa chamado duas vezes?!!!
CMvl> Será que o problema é, estando eu com duas transações iniciaras
CMvl> na mesma instância do programa, a 2.ª quando apanha um update
CMvl> concorrente, gera o erro ignorando o parâmetro wait?!!!
CMvl> --
CMvl> Carlos Matos
CMvl> Ligado 27 de outubro de 2021 às 21:58:41, Gladiston Santana via
CMvl> lista (lista em firebase.com.br(mailto:lista em firebase.com.br)) escreveu:
>> se estiver usando datawares (dbedit, dbcombobox, dbmemo, ....) e depois
>> dispara uma stored talvez seu problema esteja num autocommit=true do
>> firedac, isto é, não é tudo na mesma transação, ele tá abrindo e fechando e
>> em algum momento que disparar a stored vai encontrar seu trabalho em edição
>> e causando o lock. Mais ainda se houver triggers encolvidas. Dá uma olhada
>> nisso. Procedimentos longos, eu gosto de fazer as transações manualmente ou
>> pô-los em execute block, mesmo que chamasse uma SP lá dentro apenas para
>> garantir tudo no mesmo lugar.
>>
>> Em qua., 27 de out. de 2021 às 11:13, Carlos Matos via lista <
>> lista em firebase.com.br> escreveu:
>>
>> > Estou tendo um problema há vários meses.
>> >
>> > Estou a usar o Firebird 4 e tenho uma unit onde faço várias operações,
>> > select, update, insert e no final estou a executar um procedimento, ou
>> > seja,
>> > um Stored Procedure do Firebird.
>> >
>> > Tudo isto está na mesma transação.
>> >
>> >
>> ______________________________________________
>> 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://www.firebase.com.br/pesquisa_lista.html
CMvl> ______________________________________________
CMvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CMvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
CMvl> http://www.firebase.com.br/fb/artigo.php?id=1107
CMvl> Para consultar mensagens antigas:
CMvl> http://www.firebase.com.br/pesquisa_lista.html
Mais detalhes sobre a lista de discussão lista