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

Felix - SOL Informática felix em solsistemas.com
Ter Ago 20 10:30:52 -03 2013


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

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
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista