DevPath · Aprende a programar ESPTEN

SQL avanzado: ventanas, vistas y CASE

Triggers: automatizar reacciones

Qué es un trigger

Un trigger (disparador) es un bloque de SQL que la base de datos ejecuta sola, de forma automática, cuando ocurre un evento sobre una tabla: un INSERT, un UPDATE o un DELETE. Sirve para mantener datos derivados, registrar auditorías o aplicar reglas sin depender de que la aplicación se acuerde de hacerlo.

CREATE TRIGGER nombre_trigger
AFTER INSERT ON ventas
BEGIN
  -- SQL a ejecutar cuando se inserta una fila en ventas
END;

AFTER / BEFORE y el evento

Las filas NEW y OLD

Dentro del cuerpo tienes dos "filas virtuales" para leer los valores en juego:

Pseudotabla Disponible en Qué contiene
NEW INSERT, UPDATE los valores nuevos de la fila.
OLD UPDATE, DELETE los valores previos de la fila.
CREATE TRIGGER log_ventas
AFTER INSERT ON ventas
BEGIN
  INSERT INTO auditoria (accion, venta_id, importe)
  VALUES ('alta', NEW.id, NEW.importe);
END;

Así, cada vez que entre una venta, el trigger escribe automáticamente una línea en auditoria con los datos de NEW. Para comprobar su efecto, la última sentencia consulta la tabla que el trigger ha rellenado:

INSERT INTO ventas (id, producto_id, dia, importe) VALUES (7, 2, 4, 99);
SELECT accion, venta_id, importe FROM auditoria ORDER BY venta_id;

Los triggers son potentes pero invisibles: como actúan por su cuenta, conviene nombrarlos con claridad y documentarlos para que el equipo sepa que existen.

Ejemplos

Auditar cada alta en ventas con un trigger AFTER INSERT

CREATE TABLE auditoria (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  accion TEXT,
  venta_id INTEGER,
  importe REAL
);

CREATE TRIGGER log_ventas
AFTER INSERT ON ventas
BEGIN
  INSERT INTO auditoria (accion, venta_id, importe)
  VALUES ('alta', NEW.id, NEW.importe);
END;

INSERT INTO ventas (id, producto_id, dia, importe) VALUES (7, 2, 4, 99);
SELECT accion, venta_id, importe FROM auditoria ORDER BY venta_id;
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Vistas y CTEs recursivasVer el módulo →