[firebase-br] SQL com WITH LOCK

Carlos H. Cantu (TeamFB) listas em warmboot.com.br
Sex Ago 11 09:21:38 -03 2006


Configure a transação na sua aplicação para NOWAIT.

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

D> Bom dia lista.

D> Em algumas mensagens acima, eu apresentei um problema com relação a
D> "locar" um registro (lock exclusivo). O Cantu me respondeu dizendo que
D> para "locar" o registro é necessário utilzar WITH LOCK no comando SQL.

D> Um detalhe interessante é que, se eu executo o SQL abaixo no IBExpert,
D> e depois vou executá-lo na aplicação, acontece o seguinte.

D> SQL =====
D>   SELECT SC00_CONTROLAIDS.*
D>     FROM SC00_CONTROLAIDS
D>   WHERE SC00_CONTROLAIDS.TABELA = 'CO01_DIARIO'
D>       WITH LOCK;

D> Executo esse SQL no IBExpert, e corretamente o registro esta locado.
D> Então executo o mesmo SQL na minha aplicação e, depois do Open do
D> DataSet e sistema pára, fica esperando até a transação, no IBExpert,
D> for commit/rollbak (não é gerada nenhuma exceção).

D> Porém, se eu fizer o caminho inverso, ou seja, executo o SQL na
D> aplicação e depois no IBExpert, consigo alterar o registro (pelo
D> IBExpert) normalmente.

D> Posso estar enganado, mas pra mim isso parece problema de Driver de
D> conexão. Porque se eu abrir 2 janelas do SQL Editor no IBExpert e
D> executar o SQL acima, na segunda execução eu recebo uma exceção de
D> 'lock conflict'.
D> Na aplicação utilizamos o driver da UIB para DBX, e o IBExpert usa o
D> driver InterXpress, correto ?

D> Baixei a última versão do driver no site da UIB, só que é bem
D> complicado para instalar (existe algum lugar onde eu posso baixar
D> somente a DLL ?).

D> Pergunto a vocês, isso realmente é um problema de driver ou não tem
D> ligação com isso?

D> Obrigado.





Mais detalhes sobre a lista de discussão lista