Autocommit = true - powerbuilder 10.5

¿Al poner el autocommit = true en powerbuilder las actualizaciones de los datos se realizan automáticamente? ¿Si quiero realizar un rollback voy a poder realizarlo o tiene que estar el autocommit = false para poder realizar el rollback?

1 Respuesta

Respuesta
1

AutoCommit en español "Confirmación Automática"
Ejemplo:
(DW_REGISTRO_EMPLEADO)
1) AutoCommit = False

If dw_registro_empleado.Update() = 1 Then
MessageBox("SISTEMA","El empleado registrado con éxito."
Commit;

Else
MessageBox("SISTEMA","Error registrar empleado.")
Rollback;
End If

2) AutoCommit = True

dw_registro_empleado.Update()
MessageBox("SISTEMA","Empleado registrado")

Estos ejemplos son muy simples el problema es cuando realizas Updates por cantidad tienes que controlar el commit y el rollback en caso de que salte un error en medio de tu transacción o operación en el SQL. estos Updates tienen que ir en un If anilado.

If dw_1.Update()=1 Then
If dw_2.Update()=1 Then
Commit;
Else
Rollback;
End If
Else
Rollback;
End If

Como ves el commit solo se especifica una vez en toda una operación con el sql;

Estoy usando el Autocommit = true ya que de esta forma cuando realizo actualizaciones de regisros de tengo bloqueos en los datos o tablas, no se si esta bien o es correcto. En todas las actualizaciones o borrado de datos lo mismo realizo el commit y rollback en caso de que se presente el error, esto no sería necesario entonces? que pasa si se presenta un error en el medio de una actualización y el autocommit = true?

Al tener el AutoCommit = TRUE no te servirá el rollback; ya que en cada operación la confirmas antes de llegar al RollBack;

Lo recomendable es usarlo en FALSE puesto que en esta si puedes controlar los errores en una transacción. Sin embargo, tienes que asegurarte de poner Commit o Rollback; para liberar las tablas involucradas y no bloquearlas.

Como te explique anterior mente si realizas varias actualizaciones hazlas en un ( IF ANILADO ) con esto al saltar un error cancelaras toda la operación, de lo contrario se guardaran datos cuando tu transacion fue incorrecta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas