Misión 2 · Lección 9

Triggers en SQL

Objetivos

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

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

Limitaciones

Buenas Prácticas

Ejercicio Guiado

  1. Crea un trigger que registre en una tabla de auditoría cada eliminación en la tabla clientes.
  2. Implementa un trigger que no permita insertar pedidos con total menor o igual a 0.
  3. Prueba los triggers insertando, actualizando y eliminando datos.