Triggers en Bases de Datos
1. ¿Qué es un Trigger y para qué sirve? #
Un trigger es una acción que se activa automáticamente antes o después de una operación (INSERT, UPDATE, DELETE) en una tabla.
✅ Casos de uso comunes:
- Registrar automáticamente los cambios en una tabla de auditoría.
- Prevenir modificaciones incorrectas en los datos.
- Actualizar otra tabla cuando se inserta, elimina o modifica un registro.
| Tipo de Trigger | Cuándo se ejecuta |
|---|---|
| BEFORE | Antes de que ocurra el evento de modificación |
| AFTER | Después de que ocurra el evento de modificación |
| INSTEAD OF | Reemplaza la acción original del evento (fundamental sobre vistas complejas en PostgreSQL, SQL Server, Oracle y SQLite) |
2. Creación de Triggers en Bases de Datos #
Los triggers se pueden definir para ejecutarse en diferentes eventos.
Ejemplo: Crear un trigger para registrar auditoría #
Este trigger guarda en una tabla auditoria cada vez que se inserta un empleado.
3. Triggers para Validación de Datos #
Podemos usar triggers para validar datos antes de insertarlos o modificarlos.
Ejemplo: Evitar salarios menores a un mínimo permitido #
Si intentamos insertar un salario menor a 1000, se generará un error.
4. Triggers para Actualizar Datos Automáticamente #
Si un empleado cambia de departamento, queremos registrar el cambio.
Ejemplo: Registrar cambios de departamento #
Cada vez que un empleado cambie de departamento, guardamos el cambio en una tabla de historial.
5. Eliminación de Triggers #
Si queremos eliminar un trigger, usamos:
6. Ejemplo Completo #
Queremos un trigger que:
- Evite que se eliminen empleados con más de 5 años en la empresa.
- Guarde en una tabla de auditoría cuando se elimine un empleado.
Resumen del tema
Conceptos clave #
- Definición de Trigger: objeto que se ejecuta automáticamente en respuesta a eventos
INSERT,UPDATEoDELETEsobre una tabla. - Momentos de Disparo:
BEFORE: antes de aplicar el cambio, ideal para validar datos o modificar valores entrantes.AFTER: tras aplicar el cambio, idóneo para auditoría y actualización en cascada de otras tablas.INSTEAD OF: reemplaza la acción original, muy utilizado sobre vistas no modificables directamente.
- Acceso a Datos (
OLDyNEW):NEWcontiene los nuevos valores entrantes yOLDlos valores previos al cambio (en SQL Server representados por las tablas virtualesinsertedydeleted). - Cancelación y Errores: generación de excepciones personalizadas (
SIGNAL SQLSTATE,RAISE EXCEPTION,RAISE_APPLICATION_ERROR,RAISERROR) para abortar transacciones inválidas.
Qué debes recordar #
Los triggers deben ser concisos y no abusar de lógica pesada para evitar bloqueos, bucles recursivos y penalizaciones de rendimiento en operaciones masivas de escritura.