Cómo crear y borrar un trigger en MySQL
Anuncio:
En ocasiones olvidamos que realizar cualquier acción de base de datos en la capa de aplicación es más costoso normalmente que delegarlo a la base de datos. Hay determinadas tareas que se deben ejecutar cuando ocurre algo en la base de datos y para esto, es aconsejable usar triggers.
Vamos a crear un trigger en MySQL que, cuando un item sea borrado de una tabla, borre otro con el mismo ID en otra tabla. (Este ejemplo se podría hacer con un simple ON DELETE CASCADE, pero lo vamos a usar como ejemplo). Veamos el código y después lo comentamos.
CREATE DEFINER = user@localhost
TRIGGER delete_tabla2_trigger
AFTER DELETE ON tabla1
FOREACH ROW
DELETE FROM tabla2 WHERE cod LIKE OLD.cod
Lo comentamos:
Con la línea:
CREATE DEFINER = user@localhost
Estamos indicando quién esta definiendo el trigger.
En la siguiente línea:
TRIGGER delete_tabla2_trigger
Especificamos que vamos a crear un trigger y su nombre.
Con lo siguiente:
AFTER DELETE ON tabla1
Indicamos cuando se disparará el trigger, en este caso, después de un borrado en tabla1.
Con la siguiente línea:
FOREACH ROW
Indicamos la frecuencia con la que se dispara el trigger.
Y finalmente, definimos la acción a realizar:
DELETE FROM tabla2 WHERE cod LIKE OLD.cod
Hace un borrado en tabla2 cuando el cod del item de tabla2 se igual al cod del item borrado en tabla1. Con OLD.cod accedemos al item borrado para poder usarlo en esta sentencia.
Por último, si deseamos borrar el trigger, bastará con la siguiente línea:
DROP TRIGGER IF EXISTS delete_tabla2_trigger;
Esperamos que os haya sido de utilidad.