Está en la página 1de 13

Triggers MySQL

Mauricio Vélez
Contenido

● ¿Qué es un trigger?
● Eventos en una tabla
● Ejemplo de uso de triggers
● ¿Cuándo se deben ejecutar las acciones?
● Sintaxis
● Ejemplo Inserción
● Ejemplo Actualización
● Ejemplo Eliminación
● Referencias
¿Qué es un trigger?

Los triggers permiten que se desencadene una acción a partir de un evento


en una tabla de una base de datos.

Los trigger siempre estarán asociados a una tabla.


Eventos en una tabla

Existen tres tipos de eventos que pueden desencadenar acciones en una


tabla:

● INSERT
● UPDATE
● DELETE
Ejemplo de uso de triggers

Los triggers son muy utilizados en tareas de mantenimiento y


administración de bases de datos. Ejemplos de situaciones donde se puede
usar triggers:
● Registro de usuarios después de realizar actualizaciones en una base
de datos.
● Respaldar información antes de actualizar ciertos datos.
● Realizar copia de registros antes de ser eliminados.
¿Cuándo se deben ejecutar las acciones?

Es importante determinar cuándo se ejecutarán las acciones que se


desencadenan con el evento. En este sentido, se debe determinar si la
ejecución se realizará antes o después del evento.
● BEFORE. Ejecuta acciones antes del evento.
● AFTER. Ejecuta acciones después del evento.
¿Cuándo se deben ejecutar las acciones?

En las situaciones donde se desea respaldar un valor antiguo, es necesario


que las acciones se desencadenen antes (BEFORE) del evento. Esto se
puede presentar al actualizar los datos de un registro.
Sintaxis

CREATE [DEFINER = { user | CURRENT_USER }]


TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
Ejemplo Inserción

CREATE TRIGGER usuarios_ai AFTER INSERT ON usuarios


FOR EACH ROW
INSERT INTO reg_usuarios (idUsuario, nombreUsuario, emailUsuario,
registroUsuario) VALUES (NEW.idUsuario, NEW.nombreUsuario,
NEW.emailUsuario, NOW())
Ejemplo Actualización

CREATE TRIGGER productos_bu BEFORE UPDATE ON productos


FOR EACH ROW
INSERT INTO cambios_productos (idProducto, nombreProducto,
anteriorValorProducto, nuevoValorProducto, usuario, fecha) VALUES
(OLD.idProducto, OLD.nombreProducto, OLD.valorProducto,
NEW.valorProducto, CURRENT_USER(), NOW())
Ejemplo Eliminación

CREATE TRIGGER productos_ad AFTER DELETE ON productos


FOR EACH ROW
INSERT INTO elimina_productos (idProducto, nombreProducto,
valorProducto, usuario, fecha) VALUES (OLD.idProducto,
OLD.nombreProducto, OLD.valorProducto, CURRENT_USER(), NOW())
Referencias

https://manuales.guebs.com/mysql-5.0/triggers.html
https://www.anerbarrena.com/create-trigguer-mysql-5145/
GRACIAS

También podría gustarte