Curso de Bases de datos con SQL | Triggers 1

Curso de Bases de datos con SQL
Triggers

Curso de Bases de datos con SQL | Triggers 2

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.columna y OLD.columna hacen 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;