Puedes probar cualquier consulta de auditoría en nuestra consola interactiva: Abrir consola SQL →
Auditoría y logs en SQL: seguimiento profesional de cambios
La auditoría permite registrar cambios, accesos y eventos críticos en la base de datos. Es esencial para seguridad, cumplimiento normativo, trazabilidad y análisis forense.
Tabla de contenidos
1. ¿Qué es la auditoría?
Es el proceso de registrar cambios, accesos y eventos importantes en la base de datos.
2. Tipos de auditoría
- Auditoría de cambios — INSERT, UPDATE, DELETE.
- Auditoría de acceso — quién consulta qué.
- Auditoría de seguridad — roles, permisos, inicios de sesión.
- Auditoría de errores — fallos en operaciones.
3. Estructura de tabla de auditoría
CREATE TABLE auditoria (
id INT AUTO_INCREMENT PRIMARY KEY,
tabla VARCHAR(50),
accion VARCHAR(20),
usuario VARCHAR(50),
fecha DATETIME,
detalle TEXT
);
4. Auditoría con triggers
CREATE TRIGGER aud_ventas_insert
AFTER INSERT ON ventas
FOR EACH ROW
BEGIN
INSERT INTO auditoria(tabla, accion, usuario, fecha)
VALUES ('ventas', 'INSERT', USER(), NOW());
END;
CREATE TRIGGER aud_ventas_update
AFTER UPDATE ON ventas
FOR EACH ROW
BEGIN
INSERT INTO auditoria(tabla, accion, usuario, fecha)
VALUES ('ventas', 'UPDATE', USER(), NOW());
END;
5. Logs de acceso
CREATE TABLE accesos (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario VARCHAR(50),
consulta TEXT,
fecha DATETIME
);
INSERT INTO accesos(usuario, consulta, fecha)
VALUES (USER(), 'SELECT * FROM ventas', NOW());
6. Ejemplos prácticos
-- Auditoría de eliminación
CREATE TRIGGER aud_delete
AFTER DELETE ON usuarios
FOR EACH ROW
BEGIN
INSERT INTO auditoria(tabla, accion, fecha)
VALUES ('usuarios', 'DELETE', NOW());
END;
-- Registro de errores
CREATE TABLE errores (
id INT AUTO_INCREMENT PRIMARY KEY,
mensaje TEXT,
fecha DATETIME
);
7. Ejercicios para practicar
- Crea una tabla de auditoría.
- Crea un trigger para INSERT.
- Crea un trigger para UPDATE.
- Registra accesos a una tabla.
- Explica por qué auditar.
CREATE TABLE auditoria(id INT, tabla VARCHAR(50), accion VARCHAR(20));
CREATE TRIGGER t1 AFTER INSERT ON ventas
FOR EACH ROW INSERT INTO auditoria VALUES ('ventas','insert');
CREATE TRIGGER t2 AFTER UPDATE ON ventas
FOR EACH ROW INSERT INTO auditoria VALUES ('ventas','update');
INSERT INTO accesos(usuario, consulta) VALUES(USER(),'SELECT * FROM ventas');
-- Auditoría permite trazabilidad y seguridad.
8. Mini‑proyecto: Sistema de auditoría empresarial
CREATE TRIGGER aud_productos
AFTER INSERT OR UPDATE OR DELETE ON productos
FOR EACH ROW
BEGIN
INSERT INTO auditoria(tabla, accion, usuario, fecha)
VALUES ('productos', 'cambio', USER(), NOW());
END;
9. Errores comunes
- No registrar usuario.
- No registrar fecha.
- Triggers demasiado pesados.
- No limpiar logs antiguos.
10. Preguntas frecuentes
¿La auditoría afecta el rendimiento?
Sí, pero es necesaria en sistemas críticos.
¿Debo auditar todo?
No, solo eventos importantes.