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.