×
Disparadores en MySQL

Disparadores en MySQL


En esta oportunidad veremos como crear una simple validación del lado de la base de datos en este caso MySQL. Si bien muchas veces nos esforzamos en blindar nuestro sistema cuando desarrollamos para que no sea vulnerado por algún código malicioso, queremos sentirnos más seguros al momento de hacer nuestras transacciones. En este ejemplo veremos como validar el valor de un campo.

Crearemos un «trigger» (Disparador) que no es más que un programa que se ejecuta de manera automática (BEFORE / AFTER) asociado a un evento de la tabla (insert, update, delete). Para estructurar un trigger lo hacemos de la siguiente manera:

Abrimos una consola de SQL y copiamos lo siguiente

CREATE TRIGGER trigger_name
BEFORE UPDATE
   ON nombre_table FOR EACH ROW

BEGIN

   -- Logica

END

Para ilustrar mejor el ejemplo vamos a introducir el código que queremos que haga el trigger al ser llamado. Digamos que queremos asignar un color a un grupo de niños definido por edad, para ello hacemos lo siguiente.

CREATE TRIGGER `color` BEFORE UPDATE     
   ON `color_usuario` FOR EACH ROW 
BEGIN     
   IF NEW.edad <= 8 THEN       
      SET NEW.`color`='amarillo';     
   ELSEIF NEW.edad >= 9 and NEW.edad <= 13 THEN       
      SET NEW.`color`='azul';     
   END IF; 
END

Como verán ya hemos creado el trigger con el nombre de «color» y hemos utilizado el método »

BEFORE UPDATE que indica que cada vez que se vaya a realizar la actualización de un registro en la tabla «color_usuario» se ejecutara automáticamente realizando la validación que hemos creado.

De esta manera tenemos nuestra validación directamente en la base de datos, haciendo una condición que indica que el si el nuevo valor del campo «edad» (NEW.edad) es menor o igual a ocho (8) entonces asignara un nuevo valor al campo «color» (NEW.color) en este caso «amarillo», de no ser así, ejecutara la otra condición que tiene definida.

Este ejemplo lo hicimos con la condición de un nuevo valor (NEW.edad) insertado, pero que hay si queremos validar otro campo llamado «aula» que existe en la tabla pero no esta incluida en el UPDATE de este registro. Simplemente podemos definir el trigger con otro parámetro en su condición.

IF NEW.edad <= 8 and OLD.aula !='3B' THEN ...

Teniendo en cuenta que cuando utilizamos el método «NEW» nos referimos al valor que va a ser ingresado por el usuario a través de la aplicación o de la base de datos misma, y cuando utilizamos el método «OLD» nos referimos al valor actual que contiene el campo en la tabla.

Existen muchas maneras y ejemplos para definir la función de un trigger, en este caso lo hicimos con un sencillo «IF». Esperamos que este simple ejemplo te haya servido de ayuda, recuerda que puedes aplicarlo en cualquier base de datos MySQL de nuestros planes de hosting compartido, cloud vps o bien servidores dedicados.

¿Te gustó el artículo? Compártelo:

Santiago Borges

Escrito por Santiago Borges

Departamento Técnico VIP, asignado a brindar soporte de forma exclusiva a clientes de alto tráfico y con requerimientos de programación. Además, es un experimentado SysAdmin, que se encargará de que recibas la mejor asistencia ante cualquier problema. Actualmente está cursando estudios de RHCE y posee certificaciones en Inglés por la Universidad de Cambridge. Conoce más sobre él desde su perfil de LinkedIn.

    Recibe en tu correo electrónico toda la información sobre hosting, desarrollo web y dominios

    Términos y Condiciones de Servicio

    Infranetworking Internacional - Copyright 2002-2024
    Todos los derechos reservados.