【问题标题】:can't create a trigger in mysql无法在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;' 中出现语法错误

标签: mysql triggers


【解决方案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 ;

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2020-11-22
    • 2013-05-30
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    相关资源
    最近更新 更多