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()
  1. Concepto básico de Trigger
  2. ¿Cómo crear las bases de datos?
  3. ¿Cómo podemos probar los Triggers?

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

usar trigger mysql

¿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 puedes instalar 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');

pasos usar disparador

¿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 y mostrar 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, puedes instalar MysQl en tu pc fácilmente.

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!

Subir