Está en la página 1de 4

SCRIPT EN TRANSACT-SQL DE SQL SERVER

TRIGGER EN T-SQL
1. SCRIPT PARA LA CREACION DE LAS TABLAS DE BASE Y SUS INDICES Creacion de la Tabla PEDIDOS create table PEDIDOS ( PedidoID int identity(1,1) not null, Fecha dateTime not null, ClienteID int not null, VendedorID int not null )on [Primary] go -- Creacion de la tabla de Indices alter table PEDIDOS with nocheck ADD CONSTRAINT [PK_Pedidos] Primary Key clustered ( PedidoID )on [Primary] go

Creacion de la Tabla CLIENTES

create table CLIENTES ( ClienteID int identity(1,1) not null, Nombre varchar(50) not null, TarifaDesc money not null, )on [Primary] go -- Creacion de la tabla de Indices alter table CLIENTES with nocheck ADD CONSTRAINT [PK_Clientes] Primary Key clustered ( ClienteID )on [Primary] go

Creacion de la Tabla VENDEDORES

create table VENDEDORES ( vendedorID int identity(1,1) not null, Nombre varchar(50) not null, Comision money not null )on [Primary] go -- Creacion de la tabla de Indices alter table VENDEDORES with nocheck ADD
MG. Luis Boy Chavil Pgina 1

SCRIPT EN TRANSACT-SQL DE SQL SERVER CONSTRAINT [PK_vendedor] Primary Key clustered ( VendedorID )on [Primary] go Creacion de la Tabla PRODUCTOS

create table PRODUCTOS ( ProductoID int identity(1,1) not null, Descripcion varchar(50) not null, Medida varchar(20) null, Precio money not null, Stock money not null )on [Primary] go -- Creacion de la tabla de Indices alter table PRODUCTOS with nocheck ADD CONSTRAINT [PK_Productos] Primary Key clustered ( ProductoID )on [Primary] Go Creacion de la Tabla [DETALLE PEDIDOS]

create table [DETALLE PEDIDOS] ( PedidoID int not null, ProductoID int not null, Cantidad money not null, Precio money not null, )on [Primary] go -- Creacion de la tabla de Indices alter table [DETALLE PEDIDOS] with nocheck ADD CONSTRAINT [PK_DetallePedidos] Primary Key clustered ( PedidoID, ProductoID )on [Primary] go

MG. Luis Boy Chavil

Pgina 2

SCRIPT EN TRANSACT-SQL DE SQL SERVER

DIAGRAMA DE LA BASE DE DATOS

PROGRAMACION DEL TRIGGER

-- Crear un Disparador (Trigger) para: -- a) Actualizar el Stock del producto -- b) Actualizar la Comision del vendedor use BDPEDIDOS go create trigger NuevoPedido on [DETALLE PEDIDOS] for Insert AS Begin declare @StockActual money declare @Cantidad money declare @TarifaDesc money -- Extraer el Stock Actual del Producto select @StockActual=Stock from Productos PR join inserted i on PR.ProductoID=i.ProductoID -- Extraer la cantidad de Producto a Insertar select @Cantidad=Cantidad from inserted -- Extraer la Tarifa de Descuento del Cliente select @TarifaDesc=TarifaDesc from Clientes C join Pedidos P on C.ClienteID=P.ClienteID join inserted i on P.PedidoID=i.PedidoID -- Validar la Operacion if @Cantidad<=@StockActual -- Actualizar el Stock del Producto begin UPDATE PRODUCTOS set Stock=Stock-@Cantidad MG. Luis Boy Chavil Pgina 3

SCRIPT EN TRANSACT-SQL DE SQL SERVER


from PRODUCTOS PR join inserted i on PR.ProductoID=i.ProductoID -- Actualizar la Comision del vendedor UPDATE VENDEDORES set Comision=Comision+(@TarifaDesc*(i.Precio*i.Cantidad))*0.01 from Vendedores V join Pedidos P on V.VendedorID=P.VendedorID join inserted i on P.PedidoID = i.PedidoID End else Begin Raiserror('Error-Stock insuficiente',16,2) rollback transaction End End Go

Verificacion del Trigger

-- Ingresar datos de Clientes Insert Into Clientes(Nombre,TarifaDesc) Values('Juan Perez', 16.0) -- Ver los datos ingresados select * from clientes -- Ingresar datos del Vendedor Insert Into Vendedores(Nombre, Comision) Values('Luisa Galvez', 0.0) -- Ver los datos ingresados select * from Vendedores -- Ingresar datos del Producto Insert Into Productos(Descripcion,Precio,Stock) Values('Tuercas de 1/2', 16.20, 100.0) -- Ver los datos ingresados select * from Productos -- Ingresar datos del Pedido Insert Into Pedidos(Fecha, ClienteID,VendedorID) Values(GETDATE(), 1,1) -- Ver los datos ingresados select * from Pedidos -- Ingresar datos del Detalle de Pedidos Insert Into [DETALLE PEDIDOS](PedidoID,ProductoID,Cantidad, Precio) Values(1,1,24,16.20 ) -- Ver el resultado de la operacion Trigger select * from Vendedores select * from Productos select * from [Detalle Pedidos]

MG. Luis Boy Chavil

Pgina 4

También podría gustarte