[firebase-br] RES: Lock conflict on no wait transaction + IBO

W O sistemas2000profesional em gmail.com
Qua Ago 21 13:29:28 -03 2013


Para el SELECT se aconseja terminar la transacción con un COMMIT, porque el
COMMIT es más rápido que el ROLLBACK.

Saludos.

Walter.



2013/8/21 Jéter Rabelo - GMail <jeter.rabelo em gmail.com>

> Felipe, bom dia.
>
> Faça o seguinte:
>
> Na consulta (select)
> StartTransaction;
> Select ...
> RollBack ou Commit;
>
> Na gravação:
> Starttransaction;
> insert or update...
> Commit ou Rollback
>
> Fazendo dessa forma, dificilmente você terá um lock conflict.
>
> Atenciosamente.
>
> Em 20/08/2013 10:45, Felipe Aron escreveu:
>
>  Felix eu utilizo o modo "off-line". Sempre carrego as informações e
>> utilizo
>> o banco somente na gravação.
>>
>> O problema no meu cenário foi:
>>
>> Maquina01 - Abriu o cadastro do produto em modo "offline"
>>
>> Maquina02 - Abriu a tela de inclusão de pedido (também offline) e
>> selecionou o produto que esta sendo alterado. Nesse momento apenas fez o
>> "Select" e jogou o produto na Grid (offline).
>>
>> É bem provável que esse "Select" não tenha fechado a transação. Ao dar um
>> "Close()" na IBOQuery é dado um Roollback automático?
>>
>>
>>
>> Em 20 de agosto de 2013 10:30, Felix - SOL Informática <
>> felix em solsistemas.com> escreveu:
>>
>>  Sugiro que separe em tabelas distintas as informações "fisicas" do
>>> cadastro
>>> (nome, endereco, telefone) e as "dinamicas" (ultima compra, total em
>>> debito,
>>> quantidade de itens comprados)
>>>
>>> Ao abrir a ficha para edicao, o usuario tem acesso somente as "fisicas";
>>> as
>>> "dinamicas" nao devem ser alteradas (nao manter esta transacao aberta),
>>> logo
>>> não haverá conflito quando outro operador lançar um pedido.
>>>
>>> MAS se operadores diferentes abrirem o mesmo cadastro para edição voce
>>> tera
>>> conflito. Eu faço a edição em modo "off line" - carrego os campos e
>>> encerro
>>> a transacao de leitura; o outro usuario irá carregar dessa mesma maneira.
>>> Aquele que tentar salvar por ultimo recebe uma mensagem de alerta sobre
>>> os
>>> dados terem sido atualizados e que sua edição não tem mais validade.
>>>
>>> Francisco Felix
>>> www.solsistemas.com
>>>
>>>
>>> -----Mensagem original-----
>>> De: lista [mailto:lista-bounces@**firebase.com.br<lista-bounces em firebase.com.br>]
>>> Em nome de Felipe Aron
>>> Enviada em: terça-feira, 20 de agosto de 2013 09:53
>>> Para: FireBase
>>> Assunto: [firebase-br] Lock conflict on no wait transaction + IBO
>>>
>>> E ai pessoALL tudo bem?
>>>
>>> Hoje pude acompanhar em tempo real o problema do Firebird "*Lock conflict
>>> on no wait transaction*":
>>>
>>> http://www.firebirdfaq.org/**faq109/<http://www.firebirdfaq.org/faq109/>
>>>
>>> O cliente teve esse erro ao alterar o cadastro do produto, e constatei
>>> que
>>> numa outra máquina estava fazendo um novo pedido selecionando o mesmo
>>> registro.
>>>
>>> O Select (leitura) possui uma transação enquanto o Update (gravação)
>>> possui
>>> outra.
>>>
>>> Entendi a questão do NO WAIT (leitura da FAQ) porém não vejo com bons
>>> olhos
>>> habilitar o WAIT pois no meu cenário pode "travar" a ação do usuário - no
>>> caso a alteração do produto.
>>>
>>> Estou usando os componentes IBO (Database, Transaction, Query).
>>>
>>> Qual seria a forma ideal para tratar essa exceção?
>>>
>>> Deixando a Transaction de leitura como "readOnly" resolveria? Existe
>>> alguma
>>> configuração na Query de somente-leitura (usado somente para Selects)
>>> para
>>> não deixar a transação pendente?
>>>
>>> Desde já agradeço pela ajuda! :D
>>>
>>> --
>>> Analista-Programador
>>> #FollowMe: @felipearon <http://twitter.com/felipearon**> (
>>> http://felipearon.net)
>>> ______________________________**________________
>>> 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<http://www.firebase.com.br/fb/artigo.php?id=1107>
>>> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<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<http://www.firebase.com.br/fb/artigo.php?id=1107>
>>> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<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<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



Mais detalhes sobre a lista de discussão lista