Transacciones y rollback en Protheus
Delimita unidad de grabación y flujo de cancelación.
Descripción general
Guía oficial usa BEGIN/END TRANSACTION y prohíbe BeginTran/EndTran en ERP. DisarmTransaction revierte desde primer nivel abierto y entra en TTSBREAK; debe seguir Break o finalizar hilo según contrato. No abra nueva transacción antes de salir de todos los niveles pendientes. Laboratorio sin grabaciones rechaza transacción existente o TTSBREAK; demuestra flujo, no rollback de datos. FWInTTSBreak requiere LIB compatible posterior a 08022017. (Fuentes: refs. 1–1.)
Ejemplo comentado
#Include "Protheus.ch"
User Function Ed693()
// Laboratorio aislado: no interferir en transacción del llamador.
If InTransact() .Or. FWInTTSBreak()
Return Nil
EndIf
Begin Transaction
// Sin grabaciones: demostrar solo flujo de salida documentado.
DisarmTransaction()
Break
End Transaction
ConOut("Flujo finalizado")
Return NilFuera de transacción y TTSBREAK recorre transacción vacía cancelada. No hay datos para revertir. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.
- Abra transacciones cerca de grabaciones. Evite input/red con bloqueos. Rollback de base no revierte correo ni API externa; planifique efectos separados.
- En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.