[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