0% encontró este documento útil (0 votos)
244 vistas4 páginas

Creación de Trigger en T-SQL

El documento describe un script en Transact-SQL de SQL Server que crea tablas y un trigger. Crea tablas para pedidos, clientes, vendedores y productos, con índices primarios. Luego crea un trigger que actualiza el stock del producto y la comisión del vendedor cuando se inserta un nuevo detalle de pedido, validando que la cantidad no exceda el stock disponible. Finalmente muestra un ejemplo de cómo verificar el funcionamiento del trigger insertando datos.

Cargado por

Gerson Surf
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
244 vistas4 páginas

Creación de Trigger en T-SQL

El documento describe un script en Transact-SQL de SQL Server que crea tablas y un trigger. Crea tablas para pedidos, clientes, vendedores y productos, con índices primarios. Luego crea un trigger que actualiza el stock del producto y la comisión del vendedor cuando se inserta un nuevo detalle de pedido, validando que la cantidad no exceda el stock disponible. Finalmente muestra un ejemplo de cómo verificar el funcionamiento del trigger insertando datos.

Cargado por

Gerson Surf
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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 [Link]=[Link] -- 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 [Link]=[Link] join inserted i on [Link]=[Link] -- 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 [Link]=[Link] -- Actualizar la Comision del vendedor UPDATE VENDEDORES set Comision=Comision+(@TarifaDesc*([Link]*[Link]))*0.01 from Vendedores V join Pedidos P on [Link]=[Link] join inserted i on [Link] = [Link] 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