无法在mysql中创建触发器
Posted
技术标签:
【中文标题】无法在mysql中创建触发器【英文标题】:can't create a trigger in mysql 【发布时间】:2013-12-12 09:37:14 【问题描述】:我正在尝试创建触发器,但某处出现错误,因为我是新手,所以无法解决它...
所以基本上我有两张桌子:
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);
结束;
%%
有人可以帮帮我吗?
【问题讨论】:
而错误信息是.... 根据 mysql 在 '@stud_num=new.stud_num;' 中出现语法错误 【参考方案1】:问题在于您使用用户定义变量的方式,而您实际上并不需要它,因此您可以使用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 ;
【讨论】:
以上是关于无法在mysql中创建触发器的主要内容,如果未能解决你的问题,请参考以下文章