Untitled
unknown
mysql
2 years ago
3.3 kB
5
Indexable
-- Створення таблиці "Клієнти" CREATE TABLE Клієнти ( Id INT PRIMARY KEY, ПІБ VARCHAR(255), Посвідчення_водія VARCHAR(255), Дата_отримання_посвідчення_водія DATE ); -- Створення таблиці "Моделі" CREATE TABLE Моделі ( Id INT PRIMARY KEY, Назва_моделі VARCHAR(255), Марка VARCHAR(255), Ціна_за_день_оренди DECIMAL(10, 2), Місткість INT, Тип_кузова VARCHAR(255) ); -- Створення таблиці "Автомобілі" CREATE TABLE Автомобілі ( Id INT PRIMARY KEY, Держномер VARCHAR(20), Рік_випуску INT, Колір VARCHAR(255), Стан VARCHAR(255), Пробіг INT, Модель_Id INT, FOREIGN KEY (Модель_Id) REFERENCES Моделі(Id) ); -- Створення таблиці "Договори_на_оренду" CREATE TABLE Договори_на_оренду ( Id INT PRIMARY KEY, Клієнт_Id INT, Автомобіль_Id INT, Дата_укладення_договору DATETIME, Тривалість_договору NUMERIC(3, 0), Вартість_договору DECIMAL(10, 2), Дата_повернення DATETIME, FOREIGN KEY (Клієнт_Id) REFERENCES Клієнти(Id), FOREIGN KEY (Автомобіль_Id) REFERENCES Автомобілі(Id) ); -- Створення таблиці "Оренда_Автомобілів" CREATE TABLE Оренда_Автомобілів ( Договір_Id INT, Автомобіль_Id INT, PRIMARY KEY (Договір_Id, Автомобіль_Id), FOREIGN KEY (Договір_Id) REFERENCES Договори_на_оренду(Id), FOREIGN KEY (Автомобіль_Id) REFERENCES Автомобілі(Id) ); -- Перевірка на термін дії водійського посвідчення DELIMITER // CREATE TRIGGER Перевірка_терміну_посвідчення BEFORE INSERT ON Договори_на_оренду FOR EACH ROW BEGIN DECLARE дія DATE; SELECT Дата_отримання_посвідчення_водія INTO дія FROM Клієнти WHERE Id = NEW.Клієнт_Id; IF DATE_ADD(дія, INTERVAL 10 YEAR) < NOW() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Термін дії посвідчення закінчився'; END IF; END; // DELIMITER ; DELIMITER // CREATE TRIGGER check_duration_trigger BEFORE INSERT ON Договори_на_оренду FOR EACH ROW BEGIN DECLARE duration_period INT; SET duration_period = DATEDIFF(NEW.Дата_повернення, NEW.Дата_укладення_договору); IF NEW.Тривалість_договору < duration_period THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Тривалість договору не може бути менше періоду від укладення до повернення'; END IF; END; // DELIMITER ; ALTER TABLE Клієнти ADD COLUMN QR_код VARCHAR(255); ALTER TABLE Моделі MODIFY COLUMN Ціна_за_день_оренди DECIMAL(12, 2);
Editor is loading...
Leave a Comment