Проверьте даты в триггере - PullRequest
0 голосов
/ 29 мая 2018

У меня есть две вкладки (билет, гонка), я хочу проверить дату внутри вкладки, а также во вкладке гонки, билет должен быть раньше даты гонки.У меня проблема с триггером, когда я пытаюсь вставить новый билет, он возвращает мне ошибку.(# 1242 - Подзапрос возвращает более 1 строки)

DELIMITER |
CREATE TRIGGER ControllaBiglietto
BEFORE INSERT ON Biglietto
FOR EACH ROW
BEGIN
IF (SELECT Gara.Giorno FROM Gara, Biglietto WHERE 
Biglietto.Gara=Gara.Nome)>new.DataEmissione THEN
INSERT INTO Biglietto VALUES (new.Codice, new.Prezzo, NULL, 
new.Spettatore, new.Gara, new.Rivenditore);
ELSE 
INSERT INTO Biglietto VALUES (new.Codice, new.Prezzo, 
new.DataEmissione,new.Spettatore, new.Gara, new.Rivenditore); 
END IF ;
END

1 Ответ

0 голосов
/ 29 мая 2018

Нет причин делать join.Я думаю, что вы хотите:

IF (SELECT Gara.Giorno
    FROM Gara
    WHERE new.Gara = Gara.Nome
   ) > new.DataEmissione THEN
    INSERT INTO Biglietto ( . . .)
        VALUES (new.Codice, new.Prezzo, NULL, new.Spettatore, new.Gara, new.Rivenditore);
ELSE 
    INSERT INTO Biglietto ( . . . )
        VALUES (new.Codice, new.Prezzo, new.DataEmissione,new.Spettatore, new.Gara, new.Rivenditore); 
END IF ;

Когда вы используете INSERT, вы должны также перечислить все вставляемые столбцы.Особенно важно научиться хорошо писать SQL, если вы изучаете язык.

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