SQL - Problemas con Trigger y Procedimiento almacenado

 
Vista:
sin imagen de perfil

Problemas con Trigger y Procedimiento almacenado

Publicado por Eduardo Ramos (1 intervención) el 02/06/2016 23:10:13
Tengo un programa en C# que utiliza la siguiente base de datos:

CREATE DATABASE "La Plazita"

USE "La Plazita"

CREATE TABLE Categorias (
idCategoria int IDENTITY (1 , 1) NOT NULL PRIMARY KEY ,
nombreCategoria varchar (30) NOT NULL ,
descripcion varchar (40) NULL
)

CREATE TABLE Clientes (
idCliente int IDENTITY (100, 1) NOT NULL PRIMARY KEY ,
nombreCliente varchar (50) NOT NULL ,
nombreEmpresa varchar (40) NULL ,
direccion varchar (60) NULL ,
telefono varchar (15) NULL
)


CREATE TABLE Proveedores (
idProveedor int IDENTITY (1, 1) NOT NULL PRIMARY KEY ,
nombreProveedor varchar (40) NOT NULL ,
direccion varchar (60) NULL ,
telefono varchar (15) NULL
)

CREATE TABLE Ventas (
idVenta int IDENTITY (100, 1) NOT NULL PRIMARY KEY ,
fechaVenta datetime NOT NULL ,
idCliente int NOT NULL FOREIGN KEY REFERENCES Clientes(idCliente)
)


CREATE TABLE Productos (
idProducto int IDENTITY (1000 , 1) NOT NULL PRIMARY KEY ,
nombreProducto varchar (35) NOT NULL ,
descripcion varchar (50) NULL ,
cantidadPorUnidad varchar (25) NOT NULL ,
precioPorUnidad money NOT NULL ,
unidadesEnStock smallint NOT NULL ,
idProveedor int NOT NULL FOREIGN KEY REFERENCES Proveedores(idProveedor) ,
idCategoria int NOT NULL FOREIGN KEY REFERENCES Categorias (idCategoria),

CONSTRAINT CK_Productos_Precio CHECK (precioPorUnidad >= 0),
CONSTRAINT CK_Productos_Stock CHECK (unidadesEnStock >= 0)
)

CREATE TABLE DetalleVenta (
cantidadVendida int NOT NULL ,
idVenta int NOT NULL FOREIGN KEY REFERENCES Ventas (idVenta) ,
idProducto int NOT NULL FOREIGN KEY REFERENCES Productos (idProducto) ,

CONSTRAINT CK_DetalleVenta_Cantidad CHECK (cantidadVendida > 0)

)
El problema viene con esta parte del código:

CREATE PROCEDURE regresarVenta
@nombreCliente AS varchar,
@idVenta AS int,
@cantidadVendida AS int,
@nombreProducto AS varchar
AS
IF @nombreCliente IN (SELECT nombreCliente FROM Clientes)
AND @idVenta IN (SELECT idVenta FROM DetalleVenta)
BEGIN
DELETE FROM DetalleVenta where idVenta=@idVenta
END
ELSE
BEGIN
PRINT 'Alguno de los datos es incorrecto'
END
GO

CREATE TRIGGER aumentarStock
ON detalleVenta
FOR DELETE
AS
BEGIN
UPDATE p set p.unidadesEnStock = i.cantidadVendida + p.unidadesEnStock
FROM Productos p
INNER JOIN inserted i ON i.idProducto = p.idProducto
END
GO

Como se podrán dar cuenta, es un procedimiento almacenado para hacer devoluciones y un trigger que deberia aumentar el stock del inventario pero no cumplen con su funcion, si pudieran ayudarme se los agredeceria mucho (no se mucho de procedimientos almacenados y menos trigger).

Les adjunto la base de datos por si quieren checarla
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
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Problemas con Trigger y Procedimiento almacenado

Publicado por Isaias (1921 intervenciones) el 02/06/2016 23:57:32
Los triggers no fueron creados para desarrollar la logica del negocio, esto deberia resolverlo el procedimiento que afecta tus tablas.
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