You are on page 1of 4

UNIVA

4to Cuatrimestre

Triggers

Joel Flores Cervantes


26/10/2021
Manejadores de Base de Datos
4ºU Ingeniería en Sistemas
Antonio Margil Flores Gómez
//Se crean Tablas y se agregan datos
CREATE TABLE Products (ID_Porducts INT IDENTITY(1,1) PRIMARY KEY, Description VARCHAR(60) NOT NULL, Price
MONEY NOT NULL, Stock INT, Reorder INT, Product_Requested INT)

CREATE TABLE Sales (ID_Sales INT IDENTITY PRIMARY KEY, DATE DATETIME, ID_Costumer INT REFERENCES
Costumer(ID_Costumer), ID_Porducts INT REFERENCES Products(ID_Porducts), Price MONEY, QuantityINT, Amount
MONEY, Pending_Balance MONEY, Paying_Deadline DATE)

SELECT * FROM Sales

CREATE TABLE Pay(idPay INT IDENTITY PRIMARY KEY, ID_Purchases INT REFERENCES Purchases(ID_Purchases),
DATE DATETIME, Amount MONEY)

SELECT * FROM Pay

CREATE TABLE Purchases (ID_Purchases INT IDENTITY PRIMARY KEY, DATE DATETIME, ID_Supplier INT
REFERENCES Supplier(ID_Supplier), ID_Porducts INT REFERENCES Products(ID_Porducts), Price MONEY, Quantity
INT, Amount MONEY, Pending_Balance MONEY)

SELECT * FROM Purchases

CREATE TABLE Costumer (ID_Costumer INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(60), RFC CHAR(13),
Adress VARCHAR(100), Email VARCHAR(70), Phone CHAR(13))

CREATE TABLE Supplier (ID_Supplier INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(60), Adress VARCHAR(100),
Email VARCHAR(70), Phone CHAR(13))

SELECT * FROM Supplier

INSERT INTO Products (Description, Price, Stock, Reorder, Product_Requested)


values ('Dona', 10, 20, 10, 50)
INSERT INTO Products (Description, Price, Stock, Reorder, Product_Requested)
values ('Fritos', 9, 12, 30, 30)
INSERT INTO Products (Description, Price, Stock, Reorder, Product_Requested)
values ('Oreo', 15, 22, 55, 40)

SELECT * FROM Products

INSERT INTO Costumer(Name, RFC, Adress, Email, Phone) values ('Gregory House', 'GREH36625F32', 'Newark 201',
'dr.house@yahoo.com', '+732 4568373294')
INSERT INTO Costumer(Name, RFC, Adress, Email, Phone) values ('Robert Chase', 'ROCH939402E32', 'Hoboken 444',
'dr.chase@outlook.com', '+732 8345283592')
INSERT INTO Costumer(Name, RFC, Adress, Email, Phone) values ('Eric Foreman', 'ERFO209348920', 'Atlantic City 69',
'dr.foreman@outlook.com', '+732 7928309074')

SELECT * FROM Costumer

INSERT INTO Supplier(Name, Adress, Email, Phone) VALUES ('Alisson Cameron', 'Broadway 577',
'supplier.cameron@outlook.com', '+732 23402934293')
INSERT INTO Supplier(Name, Adress, Email, Phone) VALUES ('Lisa Cuddy', '5 th Ave 234', 'supplier.cuddy@outlook.com',
'+732 2384923382')
INSERT INTO Supplier(Name, Adress, Email, Phone) VALUES ('Martha Masters', '7 th Ave 545',
'supplier.masters@outlook.com', '+732 4729281734')

SELECT * FROM Supplier

CREATE TABLE Payment (ID_Payment INT IDENTITY PRIMARY KEY, ID_Sales INT REFERENCES Sales(ID_Sales),
DATE DATETIME, Amount MONEY)

// Este Trigger quita del Stock cuando se hace una venta


CREATE TRIGGER Trigger_Sales
ON Sales FOR INSERT
ASBEGIN
DECLARE @ID_Porducts INT, DECLARE @Quantity INT
SELECT @ID_Porducts = ID_Porducts, @Quantity= Quantity FROM INSERTED
UPDATE Products SET Stock = Stock - @Quantity WHERE ID_Porducts = @ID_Porducts
END
//Creo un procedimiento para guardar datos de ventas realizadas y se ejecuta con valoes
EXEC Sales_Done 21, 6, 72
CREATE PROCEDURE Sales_Done
@Article INT, @ID_Costumer INT, @QuantityINT
AS
BEGIN
IF exists(SELECT * FROM Costumer WHERE ID_Costumer=@ID_Costumer)
BEGIN
IF exists(SELECT * FROM Products WHERE ID_Porducts=@Article)
BEGIN
DECLARE @Price MONEY, DECLARE @exist INT, DECLARE @Amount MONEY
SELECT @Price= Price, @exist = Stock FROM Products WHERE ID_Porducts=@Article
SET @Amount = @Price* @Amount
IF @exist >= @Amount
BEGIN
INSERT INTO Sales(DATE, ID_Costumer, ID_Porducts, Price, Amount, Amount, Pending_Balance, Paying_Deadline)
values (GETDATE(), @ID_Costumer, @Article, @Price, @Amount, @Amount, @Amount, null)
END
ELSE
BEGIN
PRINT 'There is no amount available'
END
END
ELSE
BEGIN
PRINT 'There is no article available'
END
END
ELSE
BEGIN
PRINT 'Client is not found'
END
END

Roll_Payment 1, 250

CREATE PROCEDURE Roll_Payment


@sale INT, @Pay MONEY
AS
BEGIN
IF exists(SELECT * FROM Sales WHERE ID_Sales = @sale)
BEGIN
DECLARE @Pend_Balance MONEY
SELECT @Pend_Balance = Pending_Balance FROM Sales WHERE ID_Sales = @sale
UPDATE Sales SET Pending_Balance = Pending_Balance - @Pay WHERE ID_Sales = @sale
END
ELSE
BEGIN
PRINT 'The sale does not exist'
END
END

//Este Trigger aumenta el stock


CREATE TRIGGER trg_purch
ON Purchases FOR INSERT
AS
BEGIN
DECLARE @ID_PROD INT, DECLARE @QUAN INT
SELECT @ID_PROD = ID_Porducts, @QUAN = Quantity FROM INSERTED
UPDATE Products SET Stock = Stock + @QUAN WHERE ID_Porducts = @ID_PROD
END

//Este procedimiento guarda datos de la venta y ejecuta los valores


EXEC GetPurchase 1, 2, 200

CREATE PROCEDURE GetPurchase


@ID_Sup INT, @Article INT, @QuantityINT
AS
BEGIN
IF exists(SELECT * FROM Supplier WHERE ID_Supplier=@ID_Sup)
BEGIN
IF exists(SELECT * FROM Products WHERE ID_Porducts=@Article)
BEGIN
DECLARE @PriceMONEY, DECLARE @exist INT, DECLARE @Amount MONEY
SELECT @Price= Price, @exist = Stock FROM Products WHERE ID_Porducts=@Article
SET @Amount = @Price* @Amount
INSERT INTO Purchases(DATE, ID_Supplier, ID_Porducts, Price, Amount, Amount, Pending_Balance) VALUES
(GETDATE(), @ID_Sup, @Article, @Price, @Amount, @Amount, @Amount)
END
ELSE
BEGIN
PRINT 'There is no article available'
END
END
ELSE
BEGIN
PRINT 'Supplier not found'
END
END

Begin_Pay 22, 433

CREATE PROCEDURE Begin_Pay


@purch INT, @Pay MONEY
AS
BEGIN
IF exists(SELECT * FROM Purchases WHERE ID_Purchases = @purch)
BEGIN
DECLARE @Pend_Balance MONEY
SELECT @Pend_Balance = Pending_Balance FROM Purchases WHERE ID_Purchases =@purch
UPDATE Purchases SET Pending_Balance = Pending_Balance - @Pay WHERE ID_Purchases =@purch
END
ELSE
BEGIN
PRINT 'Purchase does not exist'
END
END

You might also like