Transacciones FireDAC: COMMIT y ROLLBACK

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

  1. Se valida la disponibilidad de productos.
  2. Se inicia la transacción.
  3. Se inserta la venta y sus líneas en el modelo vigente.
  4. Se actualizan existencias y se insertan movimientos.
  5. Se revisan filas afectadas e invariantes de negocio.
  6. Se confirma con Commit; ante un error se revierte con Rollback.

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).

Índice de guías PC Shop