diff --git a/create-database.sql b/create-database.sql index 342a055..e786c34 100644 --- a/create-database.sql +++ b/create-database.sql @@ -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'); diff --git a/task.sql b/task.sql index 8adf22b..ab4266c 100644 --- a/task.sql +++ b/task.sql @@ -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; \ No newline at end of file +COMMIT; \ No newline at end of file