[firebase-br] SQL com WITH LOCK

Daisson daisson em gmail.com
Sex Ago 11 09:07:01 -03 2006


Bom dia lista.

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

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

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

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

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

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

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

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

Obrigado.
-- 
Daisson





Mais detalhes sobre a lista de discussão lista