BEGIN TRANSACTION ... END TRANSACTION
BEGIN TRANSACTION
// ...
END TRANSACTIONAgrupa gravações e controla o cancelamento de uma transação.
Visão geral
BEGIN TRANSACTION abre um escopo transacional; END TRANSACTION encerra esse escopo. Transações aninhadas não são commits independentes. DisarmTransaction desarma a transação até o nível externo e coloca o processamento em TTSBREAK: use Break para sair do trecho, percorrendo os encerramentos, antes de iniciar outra transação. O exemplo mostra somente esse desvio, sem gravações e sem pretender comprovar rollback de dados. A TOTVS também alerta contra envolver ExecAuto padrão em transações externas sem contrato específico da rotina. (TOTVS, s.d., refs. 1–2)
Sintaxe
BEGIN TRANSACTION
// ...
END TRANSACTIONRetorno
Comando sem retorno; o resultado depende das operações e da transação externa.
Exemplo comentado
#Include "Protheus.ch"
User Function EdTrans()
Local lValidado := .F.
Begin Transaction
If !lValidado
// Sai antes de qualquer gravacao.
DisarmTransaction()
Break
EndIf
End Transaction
Return NilEncerra o caminho desarmado sem gravar. Rollback efetivo requer teste específico com tabelas próprias e operações conhecidas. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Manter transações curtas; não abrir diálogo enquanto mantém locks. Validar a rotina chamada e não adicionar transação externa indiscriminadamente.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.