Aplicar triggers para garantizar integridad y automatizar tareas.
¿Qué es un Trigger?
Un trigger es un bloque de código SQL que se ejecuta automáticamente cuando ocurre un evento en una tabla.
Eventos: INSERT, UPDATE, DELETE.
Momentos: BEFORE o AFTER.
Ejemplo: BEFORE INSERT
CREATE TRIGGER validar_precio
BEFORE INSERT ON productos
FOR EACH ROW
BEGIN
IF NEW.precio <= 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'El precio debe ser positivo';
END IF;
END;
Ejemplo: AFTER INSERT
CREATE TRIGGER log_pedido
AFTER INSERT ON pedidos
FOR EACH ROW
BEGIN
INSERT INTO auditoria_pedidos(pedido_id, fecha, accion)
VALUES (NEW.id, NOW(), 'Pedido creado');
END;
Ejemplo: AFTER UPDATE
CREATE TRIGGER historial_saldo
AFTER UPDATE ON clientes
FOR EACH ROW
BEGIN
INSERT INTO historial(id_cliente, saldo_anterior, saldo_nuevo, fecha)
VALUES (OLD.id, OLD.saldo, NEW.saldo, NOW());
END;
Ejemplo: AFTER DELETE
CREATE TRIGGER log_eliminacion
AFTER DELETE ON productos
FOR EACH ROW
BEGIN
INSERT INTO auditoria_productos(id_producto, fecha, accion)
VALUES (OLD.id, NOW(), 'Producto eliminado');
END;
Usos Comunes de Triggers
Validación de datos.
Auditoría de cambios.
Mantenimiento de historial.
Sincronización entre tablas.
Limitaciones
Pueden impactar el rendimiento si se abusa de ellos.
Complican la depuración de errores.
No deben reemplazar la lógica de negocio principal.
Buenas Prácticas
Usar nombres descriptivos para triggers.
Evitar lógica compleja dentro del trigger.
Registrar cambios en tablas de auditoría.
Ejercicio Guiado
Crea un trigger que registre en una tabla de auditoría cada eliminación en la tabla clientes.
Implementa un trigger que no permita insertar pedidos con total menor o igual a 0.
Prueba los triggers insertando, actualizando y eliminando datos.