[firebase-br] Ref. Concorrencia edição registro
Sandro
oleber.itajai em gmail.com
Qui Nov 27 12:01:04 -03 2008
Este exemplo é com IBX, mas acho que serve como padrão.
No seu caso, como o query so vai trazer um registro, naum precisa usar for
update, use apenas with lock.
"IMPORTANTE":
Para dar o conflito de imediato, vc tem que configurar na sua transação como
READ_COMMITTED e NOWAIT ( retorna o erro imediatamente, não aguarda a
primeira transação fechar)
Eu utilizo assim, com Delphi 7 e IBX
try
dmficha.qficha.Close;
dmficha.qficha.params.clear;
dmficha.qficha.sql.clear;
dmficha.qficha.sql.add('select * from ficha where codi = :codi with
lock');
dmficha.qficha.Params[0].AsInteger := ncodi;
dmficha.qficha.Open;
except // SE ALGEUM JA DEU SELECT WITH LOCK NO MESMO REGISTRO
Showmessage('Registro está sendo utilizado por outro usuário !');
end;
Espero ter ajudado.
----- Original Message -----
From: "Omar Haddad" <omarhaddadm em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, November 27, 2008 9:04 AM
Subject: [firebase-br] Ref. Concorrencia edição registro
Salve Masters of Firebird,
Gostaria de saber como é tratado a edição de um mesmo registro no Firebird,
ou seja, se uma
estação está com o registro sendo alterado e outra tenta editar o mesmo
reigstro, o Firebird
alerta ? Permite, e considera o que commitou por último ?
Tem como evitar editar o mesmo registro ?
PS: Estou usando o ZTable para incluir, alterar. Se usasse ZQuery, poderia
usar with lock
para travar o registro?
Alguém tem um exemplo usando "with lock" ? Funciona 100%
Abraços aos amigos e sucesso.
Omar
______________________________________________
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