无法在mysql中创建触发器

时间:2013-11-27 00:23:05

标签: mysql triggers

我正在尝试创建一个触发器,但某处出现错误,因为我是新手,我无法解决它...

所以基本上我有两张桌子:

students(stud_num:INT, grade_avg :real)

grading(stud_num:INT, classe:char(5), grade:int)
学生stud_num中的

是主键,在评分中它引用了学生表..

我的教授想要的是创建一个触发器,每次我们在评分中插入成绩时,grade_avg都会在学生中更新。


这是我到目前为止所做的:

  

DELIMITER %%

     

创造触手的东西

     

插入评分后

     

每行开始

     

@ stud_num = new.stud_num;

     

更新学生

     

SET grade_avg =(SELECT AVG(grade)FROM grading WHERE stud_num = @ stud_num);

     

END;

     

%%

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

问题在于您使用用户定义变量的方式,并且实际上并不需要它,所以您可以使用new.stud_num代替@stud_num来跳过它。

您还应该将更新语句限制为仅更新相关学生的行,而不是更新所有行。

DELIMITER %%

CREATE TRIGGER something

AFTER INSERT ON grading

FOR EACH ROW BEGIN

UPDATE students
SET grade_avg=(
  SELECT AVG(grade) 
  FROM grading 
  WHERE stud_num=new.stud_num
)
WHERE stud_num=new.stud_num;

END;

%%

DELIMITER ;