SQL Server - Ayuda con Triggers

   
Vista:

Ayuda con Triggers

Publicado por Arturo (2 intervenciones) el 21/05/2013 19:47:15
Buenos días. Me podrían ayudar con estos 2 triggers

-Actualizar stock actual de productos al realizar 1 pedido
-Impedir registro de productos con el mismo nombre

Mi Script de Base de Datos es el sgte.:

create database ABC
go

use ABC
go

create table Proveedores(
IdProveedor char(5) not null primary key,
Nombres varchar(40) not null,
Direccion varchar(50) not null,
Telefono char(9) not null check (len(telefono) between 7 and 9),
Ruc char(11) not null check (len(ruc)=11),
)

create table Clientes(
IdCliente char(5) not null primary key,
Nombres varchar(40) not null,
Direccion varchar(50) not null,
Telefono char(9) not null check (len(telefono) between 7 and 9),
Ruc char(11) not null check (len(ruc)=11),
)

create table Categorias(
IdCategoria char(5) not null primary key,
Categoria varchar(30) not null,
)

create table Productos(
IdProducto char(5) not null primary key,
Descripcion varchar(40) not null,
Stock int not null,
Precio decimal(10,2) not null,
IdProveedor char(5) not null foreign key references Proveedores (IdProveedor),
IdCategoria char(5) not null foreign key references Categorias (IdCategoria),
Estado varchar(20) not null check (Estado = 'Vigente' or Estado = 'Descontinuado') default 'Vigente'
)

create table Pedidos(
IdPedido char(5) not null primary key,
FechaPedido date not null,
IdCliente char(5) not null foreign key references Clientes (IdCliente)
)

create table DetallePedido (
IdPedido char(5) not null foreign key references Pedidos (IdPedido),
IdProducto char(5) not null foreign key references Productos (IdProducto),
Cantidad int not null,
PrecioVenta decimal(10,2) not null default 0
primary key (IdPedido,IdProducto)
)

--inserción de datos

insert Proveedores values ('P0001','Gloria S.A.','Av. Peru 120',2572839,10431513124)
insert Proveedores values ('P0002','Pura Vida S.A.','Av. Lima 230',997856477,10445131248)
insert Proveedores values ('P0003','Anchor S.A.','Av. Ugarte 545',6572839,10994513124)
insert Proveedores values ('P0004','Soy Vida S.A.','Av. Guia 12',4572865,10578966775)
insert Proveedores values ('P0005','Prodeco S.A.','Av. Arequipa 420',7872839,10431565784)

insert Clientes values ('C0001','Arturo Revilla','Av. de los Heros 109',2432233,10908765432)
insert Clientes values ('C0002','Brenda Orihuela','Av. Algarrobos 987',5432233,10848485432)
insert Clientes values ('C0003','Valentin Guzman','Av. Arenales 123',2092233,10989765432)
insert Clientes values ('C0004','Carlos Soto','Av. Del Rio 890',9432233,10912365432)
insert Clientes values ('C0005','Karen Sanchez','Av. Petit Thouars 123',2782233,10932565432)

insert Categorias values ('CA001','Lacteos')
insert Categorias values ('CA002','Bebidas')
insert Categorias values ('CA003','Embutidos')
insert Categorias values ('CA004','Comestibles')
insert Categorias values ('CA005','Otros')

insert Productos values ('P0001','Leche Anchor',20,1.5,'P0001','CA001',DEFAULT)
insert Productos values ('P0002','Leche Pura Vida',50,1.2,'P0002','CA001',DEFAULT)
insert Productos values ('P0003','Yogurt Bebible',100,4,'P0003','CA002',DEFAULT)
insert Productos values ('P0004','Galleta Oreo',200,0.50,'P0005','CA004',DEFAULT)
insert Productos values ('P0005','Chorizo',10,2.5,'P0004','CA003',DEFAULT)

insert Pedidos values ('PE001','12/12/2012','C0001')
insert Pedidos values ('PE002','11/12/2012','C0002')
insert Pedidos values ('PE003','05/06/2012','C0003')
insert Pedidos values ('PE004','07/04/2012','C0004')
insert Pedidos values ('PE005','05/08/2012','C0005')

insert DetallePedido values ('PE001','P0001',3,DEFAULT)
insert DetallePedido values ('PE001','P0002',4,DEFAULT)
insert DetallePedido values ('PE002','P0003',3,DEFAULT)
insert DetallePedido values ('PE002','P0001',6,DEFAULT)
insert DetallePedido values ('PE001','P0005',3,DEFAULT)

-- Para Calcular Precio de Venta en tabla DetallePedido
update DetallePedido set PrecioVenta = Cantidad * Precio from Productos
where Productos .IdProducto = DetallePedido .IdProducto

Gracias de antemano...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias Islas Gonzalez

Ayuda con Triggers

Publicado por Isaias Islas Gonzalez (3181 intervenciones) el 21/05/2013 20:13:46
Veamos:

-Actualizar stock actual de productos al realizar 1 pedido
R= Esto debe hacerlo el store que realiza o guarda el pedido
-Impedir registro de productos con el mismo nombre
R= Eso se hace con un INDICE UNIQUE en el campo correspondiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Triggers

Publicado por Arturo (2 intervenciones) el 21/05/2013 20:30:34
Lo q dices es cierto... pero me han pedido a nivel de triggers...
Alguna sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Triggers

Publicado por cristian figueroa fv.cristian@gmail.com (4 intervenciones) el 27/05/2013 20:55:21
hola buenas que tal como va todo, muy buen trabajo el tuyo me ha ayudado mucho me gustaria si me puedes ayudar con este problema porfavor :

Se le solicita crear una Base de Datos RRHH que contenga las siguientes tablas:

 Personal (run, apellido paterno, apellido materno, nombre, sueldo).  HoraExtra (run, fecha_Ingreso, fecha_Salida).  RegistroHH(run, hora, minuto, segundo, he_valorizada) .  RegistroHHHistorico(Año, Mes, RUN, Hora, Minuto, Segundo, he_valorizada) .
Se le solicita crear los trigger sobre la tabla HoraExtra que permitan que cuando se ingrese, modifique o elimine una hora extra de un empleado (se considera hora extra antes de las 8:30 a.m. y después de las 17:30 p.m.) se registren en la tabla RegistroHH en forma acumulativa y además en la tabla RegistroHHHistorico por empleado. El valor de la hora extra depende del valor hora del sueldo de cada empleado y de los siguientes criterios:  Día laboral normal : 50 % sobre la hora hombre normal.  Día sábado, domingo (no se incluye feriados para simplificar problema): 100% sobre la hora hombre normal. Debe poblar las tablas para efectuar prueba
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar