为什么这个触发器不按我想要的方式工作?
问题描述:
我在我的mysql数据库中有两个表: 顾问:编号 学生:advisorID |主要为什么这个触发器不按我想要的方式工作?
我想更新学生,其中Advisor中删除的ID等于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//
任何帮助是值得欢迎的。谢谢。
答
我不知道这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//