-- Estructura de la tabla Puesto CREATE TABLE Puesto ( idPuesto VARCHAR(4) NOT NULL, nombrePuesto VARCHAR(50) NOT NULL, PRIMARY KEY (idPuesto) ) -- Estructura de la tabla Vendedor CREATE TABLE Vendedor ( idVendedor INTEGER NOT NULL, nombre VARCHAR(20) NOT NULL, apellido VARCHAR(20) NOT NULL, puesto VARCHAR(4) NOT NULL, PRIMARY KEY (idVendedor), FOREIGN KEY (puesto) REFERENCES Puesto (idPuesto) ) -- Estructura de la tabla Cliente CREATE TABLE Cliente ( idCliente INTEGER NOT NULL, nombre VARCHAR(20) NOT NULL, apellido VARCHAR(20) NOT NULL, PRIMARY KEY (idCliente) ) -- Estructura de la tabla Categoria CREATE TABLE Categoria ( idCategoria VARCHAR(4) NOT NULL, nombre VARCHAR(20) NOT NULL, PRIMARY KEY (idCategoria) ) -- Estructura de la tabla Producto CREATE TABLE Producto ( idProducto VARCHAR (4) NOT NULL, nombre VARCHAR(50) NOT NULL, precio FLOAT NOT NULL, categoria VARCHAR(4) NOT NULL, cantidad INTEGER NOT NULL, PRIMARY KEY (idProducto), FOREIGN KEY (categoria) REFERENCES Categoria (idCategoria) ) -- Estructura de la tabla Carrito CREATE TABLE Carrito ( idCarrito INTEGER NOT NULL IDENTITY, cliente INTEGER NOT NULL, producto VARCHAR(4) NOT NULL, cantidad INTEGER NOT NULL, precioTotal FLOAT NOT NULL, statusCompra VARCHAR(1) NOT NULL, PRIMARY KEY (idCarrito), FOREIGN KEY (cliente) REFERENCES Cliente (idCliente), FOREIGN KEY (producto) REFERENCES Producto (idProducto) ) -- Estructura de la tabla Venta CREATE TABLE Venta ( idVenta INTEGER NOT NULL IDENTITY, cliente INTEGER NOT NULL, vendedor INTEGER NOT NULL, carrito INTEGER NOT NULL, PRIMARY KEY (idVenta), FOREIGN KEY (cliente) REFERENCES Cliente (idCliente), FOREIGN KEY (vendedor) REFERENCES Vendedor (idVendedor), FOREIGN KEY (carrito) REFERENCES Carrito (idCarrito) ) INSERT INTO Puesto (idPuesto, nombrePuesto) VALUES ('G002', 'Vendedor General'), ('J003', 'Jefe de Ventas'), ('A001', 'Administrador de Ventas'); INSERT INTO Vendedor (idVendedor, nombre, apellido, puesto) VALUES (20, 'Alejandro', 'Hernandez', 'G002'), (50, 'Adriana', 'Rojas', 'J003'), (30, 'Cecilia', 'Olivas', 'A001'); INSERT INTO Cliente (idCliente, nombre, apellido) VALUES (1, 'Marco', 'Balderas'), (2, 'Andrea', 'Gutierrez'), (3, 'Julieta', 'Davila'); INSERT INTO Categoria (idCategoria, nombre) VALUES ('C001', 'Computadoras'), ('C002', 'Celulares'), ('V001', 'Videojuegos'); INSERT INTO Producto (idProducto, nombre, precio, categoria, cantidad) VALUES ('HP01', 'HP Pavillon 11N010LA X60', 8000.0, 'C001', 30), ('AS01', 'Asus T100TaMN1H', 6000.0, 'C001', 20), ('IP01', 'IPHONE 6 PLUS SILVER 128GB', 16000.0, 'C002', 10), ('IP02', 'IPHONE 6 SILVER 16GB', 11000.0, 'C002', 10), ('KI01', 'X360 KINECT', 1250.0 ,'V001', 5); CREATE TRIGGER descontar on Carrito AFTER INSERT AS BEGIN DECLARE @cant as integer DECLARE @idProd as varchar(4) SET @cant = (SELECT cantidad FROM INSERTED) SET @idProd = (SELECT producto FROM INSERTED) UPDATE Producto SET cantidad=cantidad-@cant WHERE idProducto=@idProd END; CREATE TRIGGER contar on Carrito AFTER UPDATE AS BEGIN DECLARE @cant as integer DECLARE @idProd as varchar(4) DECLARE @stat as varchar(1) SET @cant = (SELECT cantidad FROM INSERTED) SET @idProd = (SELECT producto FROM INSERTED) SET @stat = (SELECT statusCompra FROM INSERTED) IF (@stat like 'C') BEGIN UPDATE Producto SET cantidad=cantidad+@cant WHERE idProducto=@idProd END END; CREATE TRIGGER ventaHecha on Venta AFTER INSERT AS BEGIN DECLARE @carr as integer SET @carr = (SELECT carrito FROM INSERTED) UPDATE Carrito SET statusCompra='V' WHERE idCarrito=@carr END; CREATE TRIGGER verificarVenta on Venta INSTEAD OF INSERT AS BEGIN DECLARE @carr as integer SET @carr = (select carrito from inserted) IF ((select statusCompra from Carrito WHERE @carr like idCarrito) = 'P') BEGIN UPDATE Carrito SET statusCompra = 'V' WHERE @carr = idCarrito INSERT INTO Venta (cliente, vendedor, carrito) VALUES ((select cliente from inserted), (select vendedor from inserted), @carr) END ELSE print 'No hay carrito separado' END