Triggers

Trigger Un disparador es un objeto con nombre en una base de datos que se asocia con una tabla y se activa cuando ocurre

Views 168 Downloads 0 File size 218KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Trigger Un disparador es un objeto con nombre en una base de datos que se asocia con una tabla y se activa cuando ocurre un evento en particular para esa tabla. El disparador queda asociado a la tabla "nombre de la tabla" y no puede ser una vista. El momento en que el disparador entra en acción puede ser antes o después que la sentencia lo activa. Existe un evento que activa al disparador que puede ser un insert, update o delete. No puede haber 2 disparadores en una misma tabla que corresponden al mismo momento y sentencia. Sintaxis: create trigger before/after insert/delete/update on nombre tabla for each row begin (accion que se va a realizar) end; Ejemplo: delimiter / create trigger tr_ventasInsert after insert on ventas for each row begin update productos set stock = stock-new.cantidad where IdProductos = new.ProductoId; end / delimiter; #insert into ventas(id, idProducto, cantidad) values('1',1,2) #insert into ventas values(1,3,20)

 Trigger Delete

 Trigger Insert

delimiter | create trigger tr_ventasDelete after delete on ventas for each row begin update productos set stock = stock old.cantidad where IdProductos = old.ProductoId; end | delimiter ;

delimiter | create trigger tr_ventasInsert before insert on ventas for each row begin select stock into @stock from productos where IdProductos = new.ProductoId;

 Trigger Update delimiter | create trigger tr_ventasUpdate after update on ventas for each row begin if(old.Cantidad > new.Cantidad) then update productos set Stock= Stock + (old.Cantidad new.Cantidad) where IdProductos = old.ProductoId; else update productos set Stock = Stock - (new.Cantidad old.Cantidad) where IdProductos = old.ProductoId; end if; end | delimiter ;

if (new.cantidad @sueldoMax) then set new.sueldo=@sueldoMax; set new.Diferencia=0; else if(new.sueldo@SueldoMax) then set new.sueldo=@sueldoMax; set new.Diferencia=0; else if(new.sueldo 500) then set @comision=@ventas*0.1 else set @comision=@ventas*.03 end if; if(@dia =1)then update comisiones set new.comision = @comision + comision where idvendedor = new.CodVendedor; else insert into comisiones values (new.CodVendedor, new.fecha, @comision) end if; end | delimiter ;

Sesion Usuario Nombre Contraseña

Historial Datos (Nombre, Contraseña) Fecha Movimiento

Para encriptar contraseñas md5() select * from usuario where contraseña = md5('Juan') 

Encriptar y guardar en el historial los movimientos que se realizaron junto con los dato y la hora que se realizó.

 Trigger Insert

set new.nombre=old.nombre; set new.contraseña=md5(new.contraseña);

delimiter | create trigger tr_insertUsuario before insert on usuario for each row begin

insert into historial (datos, fecha, movimiento) values (concat("NOMBRE:",old.nombre,"CONTRASEÑA:", new.contraseña), now(), "MODIFICADO");

set new.contraseña=md5(new.contraseña);

end | delimiter ;

insert into historial (datos, fecha, movimiento) values (concat("NOMBRE:",new.nombre,"CONTRASEÑA:", new.contraseña), now(), "INSERTADO");

 Trigger Delete

end | delimiter ;  Trigger Update delimiter | create trigger tr_UpdateUsuario before update on usuario for each row begin

delimiter | create trigger tr_DeleteUsuario before delete on usuario for each row begin insert into historial (datos, fecha, movimiento) values (concat("NOMBRE:",old.nombre," CONTRASEÑA:", old.contraseña), now(), "ELIMINADO"); end | delimiter ;