FwTransaction

Controle transacional explicito TLPP. Garante atomicidade em operacoes multi-tabela. Substitui Begin Transaction/End.

Assinatura: FwTransaction():begin() / :commit() / :rollback()

Retorna: FwTransaction

Transacoes em TLPP via classe — mais ergonomico que Begin Transaction/End. Suporta savepoints.

Local oTx := FwTransaction():begin()
try
    U_GravaPedido()
    U_GravaTitulo()
    U_AtualizaEstoque()
    oTx:commit()
catch e
    oTx:rollback()
    FwLogger():Error("Tx falhou: " + e:getDescription())
endtry

Savepoints (transacao aninhada)

oTx := FwTransaction():begin()
oTx:savepoint("antes-itens")

try
    U_GravaItens()
catch e
    oTx:rollbackTo("antes-itens")  // so reverte os itens
    // cabecalho continua
endtry

oTx:commit()

Pegadinhas

Veja também