El
StartTransaction debe ir fuera del bloque
try; ya que si no puede iniciarse la transaccion, no podras hacer el
Rollback
La
documentacion de Embarcadero recomienda hacerlo de esta manera:
Código Delphi
[-]
FDConnection1.StartTransaction;
try
FDQuery1.ExecSQL;
....
FDQuery1.ExecSQL;
FDConnection1.Commit;
except
FDConnection1.Rollback;
raise;
end;
Se puede reemplazar el
FDConnection por un componente de
Transaction, no hay problema.