Cómo crear y usar un Disparador o Trigger en MySQL paso a paso

Si estás interesado en aprender sobre el sistema de gestión de bases de datos MySQL, has llegado al post adecuado. Más adelante te hablaremos en detalle sobre la programación de Triggers. Esto ya es materia avanzada, es por ello que si eres apenas un novato, encontrarás interesante la lectura de este post, pues aprenderás un monton.

Cómo Crear un Disparador o Trigger

Índice()

    Concepto básico de Trigger

     Primero vamos con la definición de Trigger. Este es un objeto que está dentro de una base de datos que lleva a cabo una acción cuando se produce un evento en la misma. Como ejemplo tenemos lo siguiente: cuando se venda una entrada de cine, debe descontarse un asiento disponible. Para ello debemos ingresar el siguiente código genérico:

    CREATE TRIGGER nombretrigger.

    {BEFORE | AFTER}

    // Se ejecutará antes o después del evento

    {INSERT | UPDATE | DELETE }

    //acción que va a disparar el trigger

    ON nombretabla

    //nombre de la tabla que afectó al evento

    FOR EACH ROW

    Sentencia SQL que va a ser ejecutada más adelante

    ¿Cómo crear las bases de datos?

    Ahora vamos a crear el ejemplo mencionado anteriormente de la venta de entradas en el cine. Para ello tenemos que usar preferiblemente phpmyadminn. Pero también sirve cualquier software que sea compatible con procedimientos almacenados y triggers. Para crear la base de datos, debemos hacer lo siguiente:

    CREATE DATABASE `ventas`

    Ahora tenemos que  crear 2 tablas. Primero, procedemos a crear la tabla para almacenar las entradas vendidas de la siguiente forma

    CREATE TABLE `entradas`
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `idevento` int(11) NOT NULL,
    `nroticket` int(11) NOT NULL,
    PRIMARY KEY (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    Luego, tenemos que elaborar la tabla para guardar la disponibilidad de entradas de cine para una función específica de esta forma:

    CREATE TABLE IF NOT EXISTS `stock` 
    `idevento` int(10) NOT NULL,
    `stockactual` int(10) NOT NULL
    ENGINE=MyISAM DEFAULT CHARSET=latin1;

    CREATE TABLE `eventos`
    `idevento` int(10) NOT NULL AUTO_INCREMENT,
    `evento` int(11) varchar(200),
    `fecha` date NOT NULL,
    PRIMARY KEY (`idevento`)
     ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    A continuación debes cerrar el trigger como una consulta SQL. Para hacerlo te recomendamos usar el software gratis llamado “HEIDISQL”.

    A su vez, la sentencia NEW.nombre_column nos muestra cuál campo de la operación disparadora usaremos al momento de la ejecución. En este caso será idevento, pero si existieran más, tenemos que usar siempre la palabra NEW en adelante.

    CREATE TRIGGER `actualizar_stock` AFTER INSERT ON `entradas`
    FOR EACH
    ROW
    UPDATE stock SET stockactual=stockactual -1 WHERE idevento = NEW.idevento

    Posteriormente, debemos ejecutar la sentencia SQL y veremos que se ha creado el disparador de forma satisfactoria.

    Como ejemplo, ingresaremos en la tabla stock de 500 entradas de cine disponibles para una función. En este caso no existirá una respuesta del trigger, ya que ha sido elaborado para ejecutarse cuando ocurra una inserción en la tabla de entradas.

    INSERT INTO `ventas`.`stock` (`idevento` ,`stockactual`) VALUES ('1', '500');

    ¿Cómo podemos probar los Triggers?

    En esta parte del post te mostraremos cómo probar la programación de Triggers. Para ello debemos suponer que vendimos la entrada número 100 para la función 1 y luego insertamos la venta realizada en la base de datos “entradas”.

    INSERT INTO entradas (idevento ,nroentrada) VALUES ( '1', '100');

    Ahora, tenemos que analizar lo ocurrido en la respectiva tabla stock. En este caso, ahora el stock tiene 499 entradas disponibles. Esto se debe a que la inserción en la tabla ticket disparó y luego ejecutó el trigger llamado actualiza_stock.

    Si utilizamos este método podemos estar seguros de que habrá transparencia en cuanto a la ejecución para el usuario y el programador.

    Otro ejemplo para dar de baja un artículo de un almacén es el siguiente

    CREATE TRIGGER `Baja_productos` AFTER DELETE ON `productos`
    FOR EACH
    DELETE FROM stock WHERE idproducto=NEW.idproducto
    ROW 

    Recuerda que la creación de una base de datos es esencial, para llevar y almacenar de forma adecuada y estructural casi cualquier información, es lo que se esconde detrás de cualquier factura, venta, compra, ejecutada por medio de un computador. 

    De tal forma los Triggers (disparadores/desencadenadores) forman parte importante de dicha base de datos, capaces de prevenir errores en la misma y ejecutarse en un momento determinado de manera automática. Además, sincronizan tablas y modifican valores de una vista.

    ¡Listo, esto ha sido todo! Con esta información podrás ampliar mucho más tus conocimientos con respecto a la programación de Triggers. Nos vemos pronto en el siguiente post!

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    ¿Qué te pareció este artículo?

    Subir

    Este sitio web utiliza cookies para garantizar que obtenga la mejor experiencia en nuestro sitio web. Leer Más