[firebase-br] for update with lock

Sandro sandro_rebelo em ibest.com.br
Ter Nov 25 16:41:53 -03 2008


Ontem mesmo foi postado isso aki.. vamos la novamente, porem meu exemplo é 
com IBX

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;

Eu não utilizo fetchall porque estou retornando apenas um registro, pois
essa consulta é pela minha chave primaria.

Espero ter ajudado.



----- Original Message ----- 
From: "Alex Miranda de Oliveira" <alexsistemass em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, November 25, 2008 4:31 PM
Subject: [firebase-br] for update with lock


select cliente.codigo from cliente
where cliente.codigo =:codigo
for update with lock


Quero Saber como fazer para tratar transaçoes para que dois
usuarios  não entrem  no Mesmo  Cliente.

Uso Fibplus com Delphi 7

O tipo de transações esta CommitRetaining
______________________________________________
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