betoesquivel icon

Repaso Triggers en el Salón

betoesquivel | PRO | 11/20/14 01:56:24 PM UTC | 0 ⭐ | 409 👁️ | Never ⏰ | []
SQL |

4.09 KB

|

None

|

0 👍

/

0 👎

-- 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

Comments