En este tema, aprenderás a usar de forma adecuada los triggers o “disparadores”, cuya función consiste en ejecutar acciones de manera automática dependiendo de los eventos que se presenten en una base de datos. Lo anterior ayuda a realizar diversos tipos de acciones para llevar a cabo actividades, tareas o rutinas específicas de acuerdo con lo que se requiera, ya sea por parte de la propia base de datos o de los usuarios. Sabrás cómo crearlos y gestionarlos a través del uso de PL/SQL mediante una definición adecuada de código que ayude a trabajar con variables y procedimientos previamente almacenados en PL/SQL. También revisarás algunos ejemplos prácticos de su utilización para automatizar tareas y mejorar el rendimiento de las bases de datos que se hayan definido a través de SQL.
¿Qué son los trigger?
Los triggers son estructuras de bloques y programas predefinidos llamados de manera automática cuando se presenta algún evento. Se almacenan en las bases de datos y se invocan automáticamente en escenarios particulares (Geeksforgeeks, 2024).
Un trigger en PLSQL se entiende como un tipo especial de procedimiento almacenado en la base de datos que se “dispara” (triggered) cada vez que las sentencias INSERT, UPDATE o DELETE se ejecutan sobre dicha tabla, es decir, el procedimiento no está limitado a la realización de una sola operación, sino que pueden realizarse varias de ellas y desde formatos diferentes, dependiendo de si un registro es creado, actualizado o eliminado de una tabla de la base de datos (PL/SQL, 2021). Algunas de las circunstancias en que puede ser de mucha utilidad el uso de un trigger son las siguientes, de acuerdo con PL/SQL (2021):
Los triggers se consideran una herramienta de mucha utilidad para mantener la integridad de las bases de datos, esto debido a que pueden llevar a cabo cualquier acción que se requiera para que dicha integridad sea permanente. Además, son capaces de llamar a otros procedimientos que, a su vez, disparan otros triggers. Sin embargo, no admiten parámetros y tampoco pueden ser invocados desde otros procedimientos PL/SQL. Se almacenan en la tabla catálogo del sistema como una propiedad de la tabla.
Se presenta a continuación un ejemplo del uso de triggers en una empresa que cuenta con un sistema de inventarios en el cual los usuarios registran las entradas y salidas de productos. Se requiere que los inventarios estén siempre actualizados sin errores humanos, por lo que, en este caso, un trigger ayudaría a realizar esta actividad de manera segura. En las siguientes tablas, se aprecia la venta de tres unidades y el trigger actualiza las existencias de los productos de forma automática.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
De esta manera, con la ejecución del trigger, cada vez que se lleve a cabo una salida de un producto del almacén, se actualizarán de manera automática los productos disponibles en la base de datos, garantizando el contar con inventarios en tiempo real y así evitar ventas de productos que no estén disponibles y que podrían traer consecuencias de inconsistencias e insatisfacción de los clientes.
¿En qué pueden apoyar los trigger?
Los trigger se pueden programar para alertar al departamento de compras cuando algún producto esté por agotarse, permitiendo realizar los pedidos necesarios con tiempo para contar con inventarios suficientes. Según Geeksforgeeks (2024), los triggers o desencadenantes son importantes por las siguientes razones:
Algunas ventajas del uso de triggers PL/SQL en la gestión de bases de datos son los siguientes (PL/SQL, 2021):
Los triggers se disparan antes o después de que se lleve a cabo una creación, borrado o actualización de un registro en una tabla. Se pueden definir los que se requieran para cada tipo de evento (INSERT, UPDATE, DELETE). Sin embargo, la mejor práctica consiste en crear un trigger único para todos los eventos y, a través del uso de la sentencia IF, aplicar las reglas que permitan decidir cuál será la acción por realizarse dependiendo del evento.
Existen dos tipos de trigger de acuerdo con el nivel en que se ejecuta:
Cómo crear y utilizar triggers
Para comenzar con la realización de triggers, se necesita una base de datos MySQL y, por lo menos, una tabla donde se puedan realizar consultas. El primer paso será la definición, para lo cual se escogerá un nombre que lo identifique y así lograr encontrarlo fácilmente cuando se necesite dentro de la base de datos.
Antes de escribir la instrucción CREATE, es importante declarar un delimitador como el siguiente:
DELIMITER $$
CREATE TRIGER nombre_trigger
El segundo paso consiste en definir cuándo se ejecutará, por lo que existen dos opciones: AFTER o BEFORE (en ese orden). AFTER indica que el trigger se activará después de ejecutar la instrucción y BEFORE que el trigger se detonará antes de la ejecución de la instrucción. Considera que las órdenes que aceptan los triggers son INSERT, DELETE y UPDATE.
DELIMITER $$
CREATE TRIGGER nombre_trigger
AFTER INSERT ON nombre_tabla
Posteriormente, se debe especificar la estructura del trigger, es decir, en donde se aplicarán los cambios que se requieren. En este caso, se realizará para todas las filas (FOR EACH ROW):
DELIMITER $$
CREATE TRIGGER nombre_trigger
AFTER INSERT ON nombre_tabla
FOR EACH ROW
Finalmente, se introducen las líneas de código SQL que se quieren ejecutar, entre BEGIN y END. Recuerda que se debe cerrar el delimitador definido al comienzo.
DELIMITER $$
CREATE TRIGGER nombre_trigger
AFTER INSERT ON nombre_tabla
FOR EACH ROW
BEGIN
//Instrucciones SQL
END;$$
Con este código, después de un INSERT en nombre_tabla, se ejecutarán las instrucciones declaradas dentro del BEGIN.
Ejemplo práctico
Se desea crear una tabla llamada “ventas_mensuales”, la cual tiene las siguientes columnas:
Se necesita agregar un trigger que se active después de cada inserción de un registro en la tabla y que, adicionalmente, actualice el valor de la columna “Total” en otra tabla llamada “Ventas_totales”. Para lograrlo, tendrías que llevar a cabo los siguientes pasos:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Observa que el trigger se llama “Actualizar_totales” y se activa después de cada inserción en la tabla “Ventas_mensuales”, es decir, se ejecuta una vez por cada fila insertada; esta instrucción la especifica el siguiente código: FOR EACH ROW. También se actualiza la columna “total” en la tabla “Ventas_totales”, sumando el valor de la columna “monto” en la fila recién insertada que se denomina NEW.monto.
Puedes hacer una prueba insertando una fila en la tabla “ventas_mensuales”, como se ve en la siguiente imagen.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Después de realizar esta inserción, la tabla “ventas_totales” debe tener un valor de 100.00 en la columna "total".
Para la implementación de cualquier trigger, debes considerar realizar pruebas previas y asegurarte de que funcionen de manera correcta, sin problemas en su ejecución o con la base de datos. Se recomienda documentar dichas pruebas de manera debida para facilitar su mantenimiento posterior.
Los triggers se consideran una herramienta muy útil para automatizar tareas, realizar la validación de los datos en las tablas y asegurar la integridad de una base de datos. Para usarlos de manera adecuada, se debe contar con conocimientos amplios de sus funciones, código, impacto en tiempo real en las tablas y sobre la lógica de la estructura de la base de datos para atender de manera confiable todas las necesidades de información de la empresa.
La actualización constante en tendencias y avances en la creación de triggers es un aspecto importante para todo administrador de bases de datos, ya que se vuelve la única manera de poder ofrecer soluciones eficientes para los departamentos que realizan análisis de información de alto nivel con el fin de asegurar el logro de sus objetivos y contar con ventajas competitivas en los mercados que constantemente evolucionan.
Asegúrate de:
Tecmilenio no guarda relación alguna con las marcas mencionadas como ejemplo. Las marcas son propiedad de sus titulares conforme a la legislación aplicable, estas se utilizan con fines académicos y didácticos, por lo que no existen fines de lucro, relación publicitaria o de patrocinio.
Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.
Lecturas
Videos
Tecmilenio no guarda relación alguna con las marcas mencionadas como ejemplo. Las marcas son propiedad de sus titulares conforme a la legislación aplicable, estas se utilizan con fines académicos y didácticos, por lo que no existen fines de lucro, relación publicitaria o de patrocinio.
La obra presentada es propiedad de ENSEÑANZA E INVESTIGACIÓN SUPERIOR A.C. (UNIVERSIDAD TECMILENIO), protegida por la Ley Federal de Derecho de Autor; la alteración o deformación de una obra, así como su reproducción, exhibición o ejecución pública sin el consentimiento de su autor y titular de los derechos correspondientes es constitutivo de un delito tipificado en la Ley Federal de Derechos de Autor, así como en las Leyes Internacionales de Derecho de Autor.
El uso de imágenes, fragmentos de videos, fragmentos de eventos culturales, programas y demás material que sea objeto de protección de los derechos de autor, es exclusivamente para fines educativos e informativos, y cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por UNIVERSIDAD TECMILENIO.
Queda prohibido copiar, reproducir, distribuir, publicar, transmitir, difundir, o en cualquier modo explotar cualquier parte de esta obra sin la autorización previa por escrito de UNIVERSIDAD TECMILENIO. Sin embargo, usted podrá bajar material a su computadora personal para uso exclusivamente personal o educacional y no comercial limitado a una copia por página. No se podrá remover o alterar de la copia ninguna leyenda de Derechos de Autor o la que manifieste la autoría del material.