DELPHIHEAVEN · GUÍA PRÁCTICA
Transacciones FireDAC: COMMIT y ROLLBACK
Una operación comercial afecta a varias tablas y debe confirmarse como una única unidad.
Los ejemplos muestran el patrón técnico; se adaptan al esquema real, se revisan y se prueban en una base de ensayo.
Motivo
Registrar una venta y descontar stock son acciones relacionadas. Si una falla, se evita dejar otra aplicada mediante una transacción. PC Shop documenta transacciones que protegen ventas, stock y movimientos.
Estructura en Object Pascal
FDConnection1.StartTransaction;
try
// Se ejecutan las operaciones relacionadas.
// Todas utilizan la misma conexión FireDAC.
FDConnection1.Commit;
except
FDConnection1.Rollback;
raise;
end;
Secuencia de venta
- Se valida la disponibilidad de productos.
- Se inicia la transacción.
- Se inserta la venta y sus líneas en el modelo vigente.
- Se actualizan existencias y se insertan movimientos.
- Se revisan filas afectadas e invariantes de negocio.
- Se confirma con
Commit; ante un error se revierte conRollback.
Prueba
Se provoca una excepción antes de registrar el movimiento de stock y se comprueba que los datos anteriores de esa transacción tampoco permanecen. Después se repite con varios productos y se consulta la trazabilidad de cada línea.
Referencias (APA 7)
Embarcadero Technologies. (s. f.). Using SQLite with FireDAC. https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_SQLite_with_FireDAC.
Embarcadero Technologies. (s. f.). Executing commands (FireDAC). https://docwiki.embarcadero.com/RADStudio/en/Executing_Commands_(FireDAC).