Curso de Bases de datos con SQL
Triggers
Un trigger en SQL es un bloque de código que se ejecuta automáticamente cuando ocurre un evento (INSERT, UPDATE o DELETE) sobre una tabla o vista. La sintaxis depende del motor de base de datos, pero te muestro un ejemplo.
Partimos de la siguiente base de datos con los siguientes registros insertados:
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100),
fecha_creacion DATETIME DEFAULT NOW(),
fecha_modificacion DATETIME
);
INSERT INTO `usuarios` (`id`, `nombre`, `email`, `fecha_creacion`, `fecha_modificacion`) VALUES
(1, 'Paco', 'mail1@example.com', '2025-08-23 19:25:21', '2025-08-23 19:32:05'),
(2, 'Laura', 'mail2@example.com', '2025-08-11 19:24:45', '2025-08-23 19:32:12'),
(3, 'Roberto', 'mail3@example.com', '2025-08-12 19:28:02', '2025-08-23 19:32:21'); Vamos a crear un trigger para que cada vez que se modifique alguno de los registros se actualice el valor del campo fecha_modificacion.
CREATE TRIGGER usuarios_before_update
BEFORE UPDATE ON usuarios
FOR EACH ROW
SET NEW.fecha_modificacion = NOW(); - Además de BEFORE UPDATE, podemos usar
BEFORE INSERT, AFTER INSERT,BEFORE UPDATE,AFTER UPDATE,BEFORE DELETE,AFTER DELETE. NEW.columnayOLD.columnahacen referencia al nuevo y viejo valor de la columna.
Para eliminar un trigger, podemos usar el siguiente código:
DROP TRIGGER IF EXISTS usuarios_before_update;