Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

LOCK REDO

 

Propósito
Refaz uma transação, caso ocorra deadlock

Sintaxe
Lock redo
Replace matr with xmat;
Nome with xnome
Insert
If dberr() # 0
? dbemns()
endif
unclock


Utilização
Esta opção REDO, desfaz a transação corrente, desbloqueia e volta a processar novamente a transação que causou deadlock. É importante salientar os camandos lock e unclock devem estar no mesmo fonte, já que internamente o programa C gerado utiliza comandos goto.

Exemplo
Suponhamos que seu programa, exista uma a transação abaixo:

Lock redo
Replace tab_mat with mat,;
Tab_nome with nome,;
Tab_end with end
Modify
Unlock

Se dois ou mais processos diferentes executam ao mesmo tempo o código acima. e o tipo de bloqueio não for de banco, pode ocorrer deadlock (um processo aguarda o término do outro que por sua vez aguarda o término deste um).
Neste caso a opção redo, desfaz a transação corrente, ou seja, desfaz a alteração acima, desbloquia(unlock o registro ou arquivo) e tenta fazer novamente a transação, no caso a alteração acima.

 



 

 

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!