Skip to content
Open

1 #193

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 14 additions & 23 deletions create-database.sql
Original file line number Diff line number Diff line change
@@ -1,44 +1,35 @@
DROP DATABASE IF EXISTS ShopDB;
CREATE DATABASE ShopDB;
USE ShopDB;

CREATE TABLE Products (
ID INT AUTO_INCREMENT,
ID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50),
Description VARCHAR(100),
Price INT,
WarehouseAmount INT,
PRIMARY KEY (ID)
WarehouseAmount INT
);

CREATE TABLE Customers (
ID INT AUTO_INCREMENT,
ID INT AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(50),
Address VARCHAR(50),
PRIMARY KEY (ID)
Email VARCHAR(100),
Address VARCHAR(50)
);

CREATE TABLE Orders (
ID INT AUTO_INCREMENT,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(ID) ON DELETE SET NULL,
ID INT AUTO_INCREMENT PRIMARY KEY,
CustomerID INT,
Date DATE,
PRIMARY KEY (ID)
FOREIGN KEY (CustomerID) REFERENCES Customers(ID) ON DELETE SET NULL
);

CREATE TABLE OrderItems (
ID INT AUTO_INCREMENT,
OrderID INT,
FOREIGN KEY (OrderID) REFERENCES Orders(ID) ON DELETE SET NULL,
ProductID INT,
ID INT AUTO_INCREMENT PRIMARY KEY,
OrderID INT,
ProductID INT,
Count INT,
FOREIGN KEY (ProductID) REFERENCES Products(ID) ON DELETE SET NULL,
PRIMARY KEY (ID)
FOREIGN KEY (OrderID) REFERENCES Orders(ID) ON DELETE SET NULL,
FOREIGN KEY (ProductID) REFERENCES Products(ID) ON DELETE SET NULL
);

INSERT INTO Products (Name, Description, Price, WarehouseAmount)
VALUES ('AwersomeProduct', 'Product Desctiption', 5, 42);

INSERT INTO Customers (FirstName, LastName, Email, Address)
VALUES ('John', 'Dou', 'j@dou.ua', 'far, far away');
18 changes: 15 additions & 3 deletions task.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,22 @@
USE ShopDB;

-- Some data should be created outside the transaction (here)
INSERT INTO Products (ID, Name, Description, Price, WarehouseAmount)
VALUES (1, 'AwersomeProduct', 'A great product', 100, 42);

INSERT INTO Customers (ID, FirstName, LastName, Email, Address)
VALUES (1, 'John', 'Doe', 'john.doe@example.com', '123 Main St');

INSERT INTO Orders (CustomerID, Date)
VALUES (1, '2023-01-01');
-- Start the transaction
START TRANSACTION;
START TRANSACTION;

INSERT INTO OrderItems (OrderID, ProductID, Count)
VALUES (LAST_INSERT_ID(), 1, 1);

-- And some data should be created inside the transaction
UPDATE Products
SET WarehouseAmount = WarehouseAmount - 1
WHERE ID = 1;

COMMIT;
COMMIT;
Loading