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 ([Link], [Link],
[Link], 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
([Link], [Link], [Link],
[Link], 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 ([Link],
[Link], [Link], CURRENT_USER(), NOW())
Referencias
[Link]
[Link]
GRACIAS