MANEJO DE TRIGGER
Introducción
Los triggers o disparadores, son procedimientos automáticos que se activan después de una acción, esta acción puede ser un insert, delete o update.
Se trabaja con dos identificadores que son after (despues de) y before (antes de). Dentro de las condiciones que tienen los triggers esta que no pueden existir dos o mas after para el insert o para el delete o para el update.
El after es el caso mas común de los triggers, se activa después de una sentencia y afecta solo tablas distintas a la que lo esta invocando, situación que no sucede con el before que solo afecta la tabla que lo invoca
NOTA
Cuando trabajamos con trigger la primera tabla que va, es la tabla por la cual se va a hacer el proceso (insertar,actualizar o borrar) y en la instrucción Mysql de primero va la tabla en la que se realizan los cambios o movimientos a través de los datos o la información que hay en las otras tablas.
La sintaxis general es:
delimiter //
create trigger nombre after (insert, delete, update) on nombe_tabla
for each row //recorre fila por fila (arreglos o matrices)
begin
sentencia sql
end
//
delimiter ;
Para visualizar el Trigger:
comando :show triggers;
Ejemplos
Crear un trigger con el nombre de valorventa que al insertar un articulo realice el siguiente el calculo:
*Calcular el valorventa de la tabla detalle con un incremento del 23% del valor unitario de la tabla articulo.
Comando: delimiter //
create trigger valorventa after insert on articulo
for each row
begin
update detalle set valorventa =(select valorunitario + (valorunitario*0.23) from articulo where detalle.codigo=articulo.codigo);
end
//
delimiter ;
*Crear un trigger con el nombre de actualizar_existenciap que al insertar un detalle realice el siguiente calculo:Calcular las existencias según la tabla detalle de cada articulo
Comando: delimiter //
create trigger actualizar_existenciap after insert on detalle
for each row
begin
update articulo set existencia = cantidad - (select sum(cantidad) from detalle where detalle.codigo = articulo.codigo);
end
//
delimiter ;
*Ejemplo de un triggers: La idea es crear un trigger que antes de insertar un producto calcule el valor de la venta. Supongamos la siguiente situación: En una empresa se venden productos y se ganan porcentajes fijos por cada producto.
Comando: delimiter //
create trigger calvalorventa before insert on productos
for each row
begin
Set new.valorventa = new.costo+(new.costo*new.porgana/100);
end
//
delimiter ;
*Ejemplo 2: La idea es crear un Trigger que antes de actualizar un producto vuelva y calcule el valor venta.
Comando: delimiter //
create trigger actvalorventa before update on productos
for each row
begin
Set new.valorventa=new.costo+(new.costo*new.porgana/100);
end
//
delimiter ;
COMANDOS REALIZADOS EN LA SIGUIENTE BASE DE DATOS(LINK)
https://drive.google.com/drive/folders/1yFoHa1jSLOa0FYwuaLMl0Lcl8Kqv9enD?usp=sharing
ACTIVIDAD
Sobre una nueva Base de datos o una Base de Datos Vieja,crear 2 trigger con after y 2 trigger con Before
Link de Actividad Resuelta
https://drive.google.com/drive/folders/1KaLWiOQneJFxfbz6eC5Ar5iocfnamjVv?usp=sharing
Introduce un texto aquí...