Lab Dirigido
Ejemplo 7 – Procedimiento de Actualizacion
-- Actualizar su monto logrado por agencia
Update Agencia set m_logrado = 0
--- Crear el procedimiento Almacenado
Create Procedure sp_actualiza_age
@age varchar(2),
@mto money
as
Update Agencia Set m_logrado = m_logrado + @mto where c_agencia = @age

Ejecutamos el procedimiento
exec sp_actualiza_age '04',2153 -- Select * from Agencia

----------------------------------------------------------------------------
Ejemplo - Actualizar la tabla Agencia, con las ventas realizadas en la tabla ventas(mto_total) por Agencia
Create procedure sp_Actualiza_agencia_mTotal
@cod_age varchar(2)
as
declare @suma int -- declaracion de variable, donde se va a guardar el total
-- asigno la suma de las ventas por agencia(tabla ventas) a la variable
set @suma = (Select SUM(mto_total) from ventas where c_agencia =@cod_age)
-- actualizo m_logrado de la tabla agencia con la suma de las ventas de la tabla ventas
Update agencia Set m_logrado = m_logrado + @suma
where c_agencia = @cod_age
-- **************************************************
Ejecutamos el procedimiento
exec sp_Actualiza_agencia_mTotal '02'

--------------------------------------------------------------
Otro Procedimiento, recibe el parametro del codigo del producto Se desea aumentar el stock de la siguiente manera : P01,P03,P05 aumenta el stock en 153 y P02,P04 aumenta el stock en 95
Create Procedure sp_act_stock
@cod_prod varchar(3)
as
if @cod_prod in ('P01','P03','P05')
update producto set c_stock = c_stock + 153 where c_producto = @cod_prod
else
if @cod_prod in ('P02','P04')
update producto set c_stock = c_stock + 95 where c_producto = @cod_prod
-- **************************************************
Ejecutamos el procedimiento
exec sp_act_stock 'P02'

-------------------------------------------------------------------
Trabajando con Trigger – Ejemplo 2
Generar un Trigger en caso de reg se elimine me vuelva a actualizar la tabla agencia
create Trigger td_eli_agencia
on ventas
for delete
as
update agencia set m_logrado = m_logrado - (Select mto_total from deleted)
where c_agencia = (select c_agencia from deleted where n_item = (Select n_item from deleted)

------------------------------------------------------------------
Eliminacion de registro, y actualizacion con el trigger de la tabla agencia
delete from ventas where c_agencia = '07'
select * from agencia
--********************************************************************************
-- Insertar en ventas un registro, y actualizar el m_vendido de la tabla vendedor_agencia
Select * from ventas
Select * from vendedor_agencia
delete from ventas where n_item = 53
Insert into Ventas Values('02','A2','P06','V6' ,25,89)
-- *************************************************************
--drop Trigger tg_act_vend_age
Create Trigger tg_act_vend_age
on ventas
for insert
as
Update vendedor_agencia
set m_vendido = m_vendido + (Select mto_total from inserted)
where c_agencia =(Select c_agencia from inserted)
and c_vendedor = (Select c_vendedor from inserted)
select * from vendedor_agencia
Insert into Ventas Values('02','A2','P06','V6' ,25,89)
---------------------------------------------------------------------

Crearemos la siguientes tablas
Create Table Movimiento
(n_secuencia int identity(1,1) not null,
n_tabla varchar(50),
t_movimiento char(1),
d_fecha datetime,
d_usuario varchar(20),
d_maquina varchar(20),
m_tot_trans money )
Create Table Pedido
(n_pedido int identity(1,1) not null,
c_producto varchar(3),
x_cant_pedido int,
i_aceptado char(1),
i_anulado char(1) )
-- ********************************************
Select * from ventas
Select * from movimiento
--***********************************************************
Cada vez que se inserte en la tabla ventas se debe crear un registros en la tabla movimiento en cual se guardan los datos principales del usuario
Create Trigger tg_inserta_mov
on ventas
for insert
as
insert into movimiento select 'VENTAS','I',getdate(),user,host_name(),mto_total from inserted

--------------------------------------------------------------------------------
Veamos 2 ejemplo mas con Trigger
-- 1 -Crear un Trigger que actualice el stock en la tabla producto, cuando se inserte en la tabla ventas
-- 2 - Si el stock es igual 100 debe generar un registro en la tabla pedido
Pregunta 1
Create Trigger tg_Actualiza_stock
on ventas
for insert
as
update producto set c_stock = c_stock - (Select cant_vend from inserted)
where c_producto = (Select c_producto from inserted)
Insert Into Ventas Values ('03','A3','P03','V1',4,120)
--Insert Into Ventas Values ('01','A2','P04','V2',120,120)
--Insert Into Ventas Values ('02','A1','P05','V1',220,120)
select * from ventas
Select * from Producto
-- Actualizacion del Stock
Create Trigger tg_gen_pedido
on producto
for Update
as
if Update(c_stock) -- Si estoy actualizando el campo c_stock
if (Select c_stock from inserted)<= 100 -- si el campo c_stck es menor o igual a 100
insert into Pedido Select c_producto,200,'N','N' from Inserted
Select * from pedido

Insert Into Ventas Values ('01','A1','P1','V1',3,120)
-- ******************************************************
Select * from producto
Create Trigger tg_acepta_pedido
on pedido
for update
as
if update(i_aceptado)
if(Select i_aceptado from inserted) = 'S'
Update producto Set c_stock=c_stock + (Select x_cant_pedido from inserted)
where c_producto = (Select c_producto from inserted)
Select * from pedido
Update pedido set i_aceptado='S' where n_pedido=1

-------------------------------------------------------------------------
 



 
the hour is...
 
music
 


MusicPlaylist
Music Playlist at MixPod.com