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.