2011-05-17 90 views
1

我在我的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// 

任何帮助是值得欢迎的。谢谢。

回答

1

我不知道这UPDATE/IFELSEIF语法,但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// 
相关问题