Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ALTER TABLE Flights
- ADD LastUpdated DATETIME;
- CREATE TRIGGER UpdateFlightLastUpdated
- AFTER UPDATE ON Flights
- FOR EACH ROW
- BEGIN
- UPDATE Flights
- SET LastUpdated = CURRENT_TIMESTAMP
- WHERE FlightID = OLD.FlightID;
- END;
- DELIMITER //
- CREATE PROCEDURE UpdateDelayedFlights()
- BEGIN
- -- Дефиниране на променливи за употреба в курсора
- DECLARE flight_id INT;
- DECLARE flight_duration INT;
- DECLARE done INT DEFAULT FALSE;
- -- Деклариране на курсора
- DECLARE flight_cursor CURSOR FOR
- SELECT FlightID, Duration FROM Flights WHERE DepartureDateTime < CURRENT_DATE();
- -- Деклариране на обработчик на изключения за затваряне на курсора
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
- -- Отваряне на курсора
- OPEN flight_cursor;
- -- Цикъл за обхождане на резултатите от курсора
- flight_loop: LOOP
- FETCH flight_cursor INTO flight_id, flight_duration;
- -- Проверка дали всички записи са прегледани
- IF done THEN
- LEAVE flight_loop;
- END IF;
- -- Логика за обновяване на статуса на полетите
- IF flight_duration > 360 THEN -- Например, ако полетът е планиран да продължи повече от 6 часа
- UPDATE Flights SET Status = 'Delayed' WHERE FlightID = flight_id;
- END IF;
- END LOOP;
- -- Затваряне на курсора
- CLOSE flight_cursor;
- END;
- DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement