[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