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
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 ;