Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
24.10.2023
Размер:
1.22 Кб
Скачать
DELIMITER $$
CREATE TRIGGER check_valid_code_ins
BEFORE INSERT ON flights
FOR EACH ROW
BEGIN
DECLARE airline_exists INT;
DECLARE plane_exists INT;
DECLARE crew_exists INT;
SELECT COUNT(*) INTO airline_exists FROM airlines WHERE airline_code = NEW.airline_code;
SELECT COUNT(*) INTO plane_exists FROM planes WHERE plane_id = NEW.plane_id;
SELECT COUNT(*) INTO crew_exists FROM crews WHERE crew_id = NEW.crew_id;

IF (airline_exists = 0 OR plane_exists = 0 OR crew_exists = 0) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Неверный airline_code, plane_id или crew_id';
END IF;
END $$
DELIMITER ;

DELIMITER $$
CREATE TRIGGER check_valid_code_upd
BEFORE UPDATE ON flights
FOR EACH ROW
BEGIN
DECLARE airline_exists INT;
DECLARE plane_exists INT;
DECLARE crew_exists INT;
SELECT COUNT(*) INTO airline_exists FROM airlines WHERE airline_code = NEW.airline_code;
SELECT COUNT(*) INTO plane_exists FROM planes WHERE plane_id = NEW.plane_id;
SELECT COUNT(*) INTO crew_exists FROM crews WHERE crew_id = NEW.crew_id;

IF (airline_exists = 0 OR plane_exists = 0 OR crew_exists = 0) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Неверный airline_code, plane_id или crew_id';
END IF;
END $$
DELIMITER ;
Соседние файлы в папке SQL