Почему этот триггер не работает так, как я хочу? - PullRequest
1 голос
/ 17 мая 2011

У меня есть две таблицы в моей базе данных mysql: Советник: id Студент: advisorID | мажор

Я хочу обновить Студента, где удаленный идентификатор в Advisor равен advisorID, и использовать набор выражений if, чтобы изменить значение advisorID этого студента в зависимости от его специализации. Это то, что я имею до сих пор:

    delimiter //
    create trigger advisor_delete after delete
    on advisor
        UPDATE Student
            IF Student.major = 'major1' THEN SET Student.advisorID = 1;
            ELSEIF Student.major = 'major2' THEN SET Student.advisorID = 2;
            ELSEIF Student.major = 'major3' THEN SET Student.advisorID = 3;
            ELSE SET Student.advisorID = 4;
            ENDIF;
        WHERE Student.advisorID = OLD.id;
    end//

Любая помощь приветствуется. Спасибо.

1 Ответ

1 голос
/ 17 мая 2011

Я не знаю этот синтаксис UPDATE/IF ELSEIF, но оператор CASE будет работать для вас:

delimiter //
create trigger advisor_delete after delete
on advisor
    UPDATE Student
        SET Student.advisorID = 
            CASE Student.major WHEN 'major1' THEN 1
                               WHEN 'major2' THEN 2
                               WHEN 'major3' THEN 3
                               ELSE 4
            END
    WHERE Student.advisorID = OLD.id;
end//
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...