
Determinar o número máximo de tentativas de bloqueio de dados após estes já terem sido bloqueados por outro usuário.
SET LOCKLOOP TO <numero>
|
<numero> |
representa o número de tentativas de bloqueio. |
Em programas que utilizem bloqueio de dados, para que estes, ao tentarem bloquear um dado já bloqueado por outro usuário, executem apenas um determinado número de tentativas de bloqueio. Depois de cada tentativa de bloqueio, é executada uma pausa de dois segundos até a próxima tentativa (SLEEP 2).
Este comando evita que o programa fique em DEAD-LOCK.
Quando não for possível o bloqueio, verificar se o processo que o executou ainda está ativo. Caso não esteja, usar o utilitário BDRECU.
A função DBERR( ) retorna 605 quando exceder o número de tentativas de bloqueio.
O exemplo a seguir mostra-nos um máximo de dez tentativas de bloqueio de dados.
SET LOCKLOOP TO 10
LOCK
MODIFY
IF DBERR( ) # 0
erro = .T.
ELSE
SELECT c
REPLACE AUTOMEM
INSERT
IF DBERR( ) # 0
erro = .T.
ENDIF
ENDIF
IF erro
UNDO
ENDIF
UNLOCK
LOCK.
