[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