Tema SQL
Triggers (disparadores)
Código ejecutado automáticamente en INSERT, UPDATE o DELETE.
Descripción
Auditoría, reglas derivadas o réplicas lógicas. Sintaxis BEFORE/AFTER, FOR EACH ROW y tablas inserted/deleted difieren mucho entre motores (manual §25).
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
CREATE TRIGGER nombre
AFTER INSERT ON tabla
FOR EACH ROW
-- cuerpo según motor (PL/pgSQL, T-SQL, PL/SQL…)
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Rendimiento
- Cada escritura dispara lógica extra; evita trabajo pesado en triggers.
Ejemplos
Ejemplo 1
-- Pseudocódigo ilustrativo (ajustar al motor)
CREATE TRIGGER trg_log AFTER INSERT ON pedidos
FOR EACH ROW
BEGIN
INSERT INTO auditoria (tabla, accion, en) VALUES ('pedidos', 'INSERT', NOW());
END;
Ejemplo 2
-- Probar triggers solo en entorno de desarrollo
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.