65 CONSULTA MULTIPLE CON beginTransaction, commit Y rollBack en el SISTEMA (PHPyMySql)FullStack

Duración: 8 min
Módulo: 💰 Implementación y Registro del Módulo de Compras Lección 17 de 17

Descripción

Lección 65: Consulta Múltiple con beginTransaction, commit y rollBack (Transacciones PDO) 🔒🔄

Esta lección crucial se dedicó a implementar el uso de Transacciones PDO (beginTransaction, commit, rollBack) en el controlador de compras para garantizar que las múltiples sentencias SQL (INSERT y UPDATE) se ejecuten de manera segura y atómica.

1. ¿Por Qué Usar Transacciones? 🤔

La necesidad de transacciones surge cuando se realizan múltiples consultas (ej: 2, 5 o 10 sentencias) en un mismo controlador [00:06].

  • Riesgo sin Transacciones: Si el INSERT de la compra se ejecuta correctamente, pero la posterior sentencia UPDATE para actualizar el stock falla, se produce una inconsistencia de datos: la compra se registra, pero el inventario no se incrementa.
  • Solución (Atomicidad): Las transacciones aseguran la atomicidad de las operaciones:
    • Si todas las sentencias tienen éxito, se confirman los cambios (commit).
    • Si al menos una sentencia falla, todos los cambios anteriores se deshacen (rollBack), como si nada hubiera pasado [02:07].

2. Implementación de los Comandos PDO en el Controlador 🛠️

Se integraron los comandos de transacción en el controlador de compras, englobando las sentencias de inserción de la compra y actualización del stock:

Comando PDOUbicaciónPropósito
$pdo->beginTransaction()Al inicio del proceso.Inicia la transacción y el proceso de ejecución [00:27].
$pdo->commit()Dentro del bloque if (si la ejecución de ambas consultas es exitosa).Confirma y guarda permanentemente los cambios en la base de datos [00:56].
$pdo->rollBack()Dentro del bloque else (si alguna consulta falla).Anula y revierte todos los cambios que se intentaron realizar [01:04].

3. Prueba de Funcionamiento y Verificación de Stock ✅

Una vez implementada la lógica de transacción y las dos consultas SQL (una para insertar en compras y otra para actualizar almacen), se verifica el resultado en la base de datos:

  • Escenario de Prueba:
    1. Stock Inicial del producto (Vino): 50 unidades [03:32].
    2. Cantidad de Compra: 50 unidades [03:48].
    3. El script calcula el Stock Total (100) y lo envía al controlador [04:08].
    4. El controlador ejecuta el INSERT y el UPDATE bajo transacción.
  • Resultado Verificado: Al revisar la tabla almacen, el stock del producto se actualiza correctamente a 100 unidades [04:39].

Esta funcionalidad demuestra que el módulo de compras ahora no solo registra la compra, sino que también gestiona de manera fiable el inventario.

4. Próximas Acciones en el Módulo de Compras 🔜

El módulo de Compras está completo en su acción de creación. Los próximos videos se centrarán en implementar el resto de acciones CRUD (Crear, Leer, Actualizar, Eliminar):

  • Visualizar (Ver): Mostrar la información completa de una compra específica [07:22].
  • Editar (Actualizar): Permitir la corrección de errores en campos como el número de factura [07:30].
  • Eliminar (Borrar): Eliminar una compra y, de manera crucial, restar la cantidad eliminada del stock total en el almacén (operación inversa al UPDATE actual) [07:43].