«Код ошибки: 2014. Команды не синхронизированы; вы не можете запустить эту команду сейчас» при создании триггера - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь написать триггер, который в случае вставки будет делать следующее:

1) подсчитать количество мест в самолете

2) подсчитать количество пассажиров, которые уже включеныэтот рейс

3) сравните эти значения и вставьте новую строку в таблицу ИЛИ выдайте ошибку, сообщив, что в самолете больше нет свободных мест.

Вот мой код:

DELIMITER //
USE AIRPORT;
CREATE TRIGGER CHECK_FOR_PLACES
BEFORE INSERT ON TICKET
FOR EACH ROW
BEGIN
DECLARE NUM_OF_PLACES INT;
DECLARE NUM_OF_PASSENGERS INT;

SET NUM_OF_PLACES := (SELECT CAPACITY
FROM AIRPLANE
INNER JOIN FLIGHT ON FLIGHT.ID_AIRPLANE = AIRPLANE.ID_AIRPLANE
WHERE FLIGHT.ID_FLIGHT = NEW.ID_FLIGHT);

SET NUM_OF_PASSENGERS := (SELECT COUNT(*)
FROM TICKET
WHERE TICKET.ID_FLIGHT = NEW.ID_FLIGHT);

IF NUM_OF_PASSENGERS >= NUM_OF_PLACES THEN
    SIGNAL SQLSTATE '-20000' SET MESSAGE_TEXT = 'NO MORE PLACES ON THIS FLIGHT';
END IF;
END//
DELIMITER ; 

После попытки скомпилировать скрипт я получаю следующую ошибку:

Error Code: 2014. Commands out of sync; you can't run this command now

Я понятия не имею, что может быть причиной этой ошибки.Буду признателен за любую помощь.Заранее спасибо

1 Ответ

0 голосов
/ 28 декабря 2018

use airport является отдельным оператором, должен заканчиваться на //, так как вы изменили разделитель:

DELIMITER //
USE AIRPORT//
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...