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í...

© 2018 Compás Lab S.L,  P° de la Castellana 79, Madrid, 28046
Creado con Webnode
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar