ACTIVIDAD 1B
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) o before (antes de).
Dentro de las condiciones que tienen los triggers está que no pueden existir dos o más after para el insert, delete o update. El after es el caso más común de los triggers, se activa después de una sentencia y afecta solo tablas distintas a la que lo está 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
end
//
delimiter ;
Descargar la siguiente base de datos para el manejo de triggers:
https://www.dropbox.com/s/3d9ktf4jekant1j/subconsultas.sql?dl=0
Ejercicios
1. Crear un trigger con el nombre de valorventa que al insertar un articulo realice el siguiente cálculo:
Calcular el valorventa de la tabla detalle con un incremento del 23 % del valorunitario de la tabla articulo.
Análisis:
1. ¿Cuál es el campo a reemplazar?
Se va a reemplazar el campo valorventa de la tabla detalle.
2. ¿Con qué lo va a reemplazar?
Se va a reemplazar con (valorunitario * 0.23) + valor unitario de la tabla articulo.
3.¿Cuál es la condición?
La condición es articulo.codigo=detalle.codigo
4. ¿Qué comando se va a utilizar?
Se va a utilizar el comando update.
5. ¿Cuál es la sintaxis?
update datelle set valorventa =(select valorunitario + (valorunitario*0.23) from articulo where articulo.codigo=detalle.codigo);
Se verifica que después de haber creado el trigger, funciona correctamente.
2. Crear un trigger con el nombre de actualizar_existencia que al insertar un detalle realice el siguiente cálculo:
Calcular las existencias según la tabla detalle de cada articulo.
Análisis:
1. ¿Cuál es el campo a reemplazar?
Se va a reemplazar el campo existencia de la tabla articulo.
2. ¿Con qué lo va a reemplazar?
Se va a reemplazar con cantidad-suma(cantidad) de la tabla detalle.
3.¿Cuál es la condición?
La condición es detalle.codigo=articulo.codigo
4. ¿Qué comando se va a utilizar?
Se va a utilizar el comando update.
5. ¿Cuál es la sintaxis?
UPDATE detalle SET existencia=cantidad-(select sum(cantidad) from detalle where detalle.codigo=articulo.codigo)

