目标
创建一个触发器,将新插入的教师与学生匹配 在目前没有顾问的同一部门,并插入一个 顾问表中的相应记录。
表格
student(id,name,dept_name,tot_cred)
instructor(id,name,dept_name,salary
advisor(s_id,i_id)
注意:student.dept_name
指的是学生的专业,s_id
与student.id
相关联,i_id
与instructor.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语句。所有问题现在解决了。谢谢大家!
答案 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;);