Actividad 3
Manejo triggers
Introducción a trigger 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 (después de) 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 la sintaxis general es
delimiter //
create trigger nombre after (insert, delete, update)
on tabla
for each row //recorre fila por fila (arreglos o matrices)
begin
sentencia sql
end //
delimiter ;
Crear un trigguer con el nombre de valorventa que al insertar un artículo realice el siguiente calculo:
Calcular el valorventa de la tabla detalle con un incremento del 23% del valorunitario de la tabla artículo
update detalle set valorventa = (select valorunitario + (valorunitario * 0.23) from articulo where articulo.codigo = detalle.codigo);
delimiter //
create trigger valorventa after insert on articulo
-> for each row
-> begin
-> update detalle set valorventa = (select valorunitario + (valorunitario * 0.23) from articulo where articulo.codigo = detalle.codigo);
-> end
-> //
delimiter ;
Crear un trigger con el nombre de actualizar_existenciap que al insertar un detalle realice el siguiente cálculo:
Calcular las existencias según la tabla detalle de cada artículo
update articulo set existencia = cantidad - (select sum(cantidad) from detalle where detalle.codigo=articulo.codigo);
delimiter //
create trigger actualizar_existenciap after on artículo
for each row
begin
update articulo set existencia = cantidad - (select sum(cantidad) from detalle where detalle.codigo = articulo.codigo);
end
//
delimiter ;
Nota: cuando trabajamos con trigger la primera que va es la tabla con la que se va hacer el proceso(actualizar o borrar) y la instrucción mysql de primera va la tabla en la que se vaya hacer cambios o movimiento atraves de los datos o la información que ha y en las otras tablas
Ejemplo: La "idea" es crear un trigger que ante de insertar un producto calcule el valor de la venta.
supongamos la siguiente situación:
En una empresa se vende productos y se gana un porcentaje fijo por cada producto
La idea es crear un trigger que antes de actualizar un producto vuelva y calcule el valor venta
Sobre una base de datos que se tenga creada o una nueva crear dos trigger con after y dos before