为什么我不能在我的mysql触发器中使用这个where子句?

时间:2014-04-21 23:25:58

标签: mysql sql

  

目标

     

创建一个触发器,将新插入的教师与学生匹配   在目前没有顾问的同一部门,并插​​入一个   顾问表中的相应记录。

表格

student(id,name,dept_name,tot_cred)
instructor(id,name,dept_name,salary
advisor(s_id,i_id)

注意:student.dept_name指的是学生的专业,s_idstudent.id相关联,i_idinstructor.id相关联

DELIMITER $$
   CREATE TRIGGER advisor_match AFTER INSERT ON instructor
   FOR EACH ROW
   BEGIN
      UPDATE advisor a SET a.i_id = new.instructor.id +
         (SELECT a.s_id,s.dept_name 
         FROM student s LEFT OUTER JOIN advisor a
         WHERE a.s_id IS NULL AND s.dept_name = new.instructor.dept_name;);
   END$$
DELIMITER ; 

这个代码可能存在的问题比我所知道的要多,但是现在MySQL一直在向我提出使用这个WHERE子句的错误,我无法理解为什么。

编辑:修改代码以反映我当前的困境,即我现在在END IF; END$$行收到错误。

编辑2:删除了END IF;,因为我没有使用IF语句。所有问题现在解决了。谢谢大家!

2 个答案:

答案 0 :(得分:1)

你加入后忘记了ON部分,很有可能: ON s.id = a.s_id

您还需要将顾问名称为a。

答案 1 :(得分:1)

我认为您可能正在寻找IS NULL

WHERE a.s_id IS NULL AND s.dept_name = new.i.dept_name;);