
Bloquear um banco de dados.
LOCK [UNDO]
|
UNDO |
determina que todas as atualizações sejam desfeitas automaticamente na ocorrência de algum erro durante uma atualização. |
Quando for necessário fazer uma atualização muito grande que envolva vários arquivos (transação), para que não se perca a confiabilidade das informações do banco de dados. Isto evita a concorrência nas atualizações de um banco de dados num sistema multi-usuário. O comando LOCK determina o início de uma transação, bloqueando o banco para uso exclusivo do usuário que fez o primeiro pedido de bloqueio. O comando LOCK deve ser usado em conjunto com o comado UNLOCK para determinar o início e o fim de uma transação.
Para se utilizar a opção UNDO a opção ARQRECUP no esquema do BD deve estar especificado.
É aconselhado que entre o início e o fim de uma transação não se tenha interrupção do programa (nenhum estado de espera), para que o banco fique menos tempo possível bloqueado.
O exemplo a seguir mostra a utilização do comando LOCK para demarcar o início de uma transação com bloqueio de dados.
LOCK && Bloqueia banco de dados.
IF DBERR( ) # 0
erro = .T.
ELSE
SELECT c
REPLACE AUTOMEM
INSERT && Inclui um registro.
IF DBERR( ) # 0
erro = .T.
ENDIF
ENDIF
IF erro && Se ocorreu algum problema erro = .T.
UNDO && Desfaz todas as atualizações anteriores.
ENDIF
UNLOCK && Desbloqueia banco de dados.
$FILES, FIND, SEEK, SET LOCKLOOP, SET MESSAGE, UNDO, UNLOCK e DBERR( ).
