Triggers

QUE ES

Un "trigger" (disparador o desencadenador) es un tipo de procedimiento almacenado que se ejecuta cuando se intenta modificar los datos de una tabla (o vista). 

Se definen para una tabla (o vista) específica, si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la que se definió un disparador para alguna de estas acciones (inserción, actualización y eliminación), el disparador se ejecuta (se dispara) en forma automática. 

Los disparadores se ejecutan DESPUES de la ejecución de una instrucción "insert", "update" o "delete" en la tabla en la que fueron definidos. Las restricciones se comprueban ANTES de la ejecución de una instrucción "insert", "update" o "delete". Por lo tanto, las restricciones se comprueban primero, si se infringe alguna restricción, el desencadenador no llega a ejecutarse. 

FUNCIONALIDAD

Los Triggers son usados para mejorar la administración de la Base de Datos, sin necesidad de que el usuario ejecute esas sentencias SQL, la utilidad que se le acostumbra mayoritariamente a dar, es para prevenir errores de datos, actualizar tablas, modificar valores, entre muchas utilidades que el administrador le quiera dar.

SINTAXIS BÁSICA

REFERENCIAS

MySQl.(?).Uso de disparadores. https://dev.mysql.com/doc/refman/5.7/en/triggers.html

pagina web. (?). Disparadores (Triggers). https://www.tutorialesprogramacionya.com/sqlserverya/temarios/descripcion.php?cod=147&punto=141&inicio=



Introducción a trigger 

Los triggers o disparadores, son procedimientos automaticos que se activan despues de una accion, esta accion puede ser un insert, delete o update se trabaja con dos identificadores que son after (despues 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 comun de los triggers, se activa despues de una sentencia y afecta solo tablas distintas a la que lo esta invocando, situacion 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 ; 

Crear un trigger con el nombre de valorventa que al insertar un articulo realice el seguiente cálculo

calcular el valorventa de la tabla detalle con un incremento del 23% del valorunitario de la tabla articulo

Análisis:

a) campo a reemplazar: detalle.valorventa

b) Con quien o que lo va a reemplazar: (valorunitario * 0.23) + valorunitario de la tabla articulo

c) condiciones: articulo.codigo = detalle.codigo

d) comando: update

update detalle set valorventa = (select valorunitario + (valorunitario * 0.23) from articulo where articulo.codigo = detalle.codigo);

ejemplo

crear un trigger con el nombre de actualizar_existenciap que al insertar un detalle realiza el siguiente cálculo

calcular las existencias segun la tabla detalle de cada articulo

Análisis:

a) campo a reemplazar: articulo.existencia

b) Con quien o que lo va a reemplazar: ( cantidad - sum (cantidad) from detalle 

c) condiciones: articulo.codigo = detalle.codigo

d) comando: update

update articulo set existencia = cantidad - (select sum(cantidad) from detalle group by (codigo) where articulo.codigo = detalle.codigo);

Ejemplo de un trigger: la "idea" es crear un trigger que antes de insertar un producto 

calcula el valor de venta. 

supongamos la siguiente situacion: en una empresa vende productos y se gana un porcentaje fijo por cada producto.

Cree la siguiente tabla:

delimiter //

create trigger calvalorventa before insert on productos

for each row

set new.valorventa = new.costo + new.porgana/100;

end

//

© 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