尝试在 MySQL 中创建触发器时出现 2 个问题

2 problems when trying to create a trigger in MySQL

我试图了解 MySQL 中的触发器,但遇到了一些问题。

我正在尝试实现一个触发器,它在 table 成绩中的每个 UPDATE/INSERT 上更新另一个名为 Student 的 table 中的“gpa”列,但无法执行正确。

代码:

CREATE TABLE Student 
(
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30),
    age TINYINT,
    gpa NUMERIC(3, 2) DEFAULT 2
);

CREATE TABLE Grades
(
    StudentId INT PRIMARY KEY,
    grade_bg INT,
    grade_math INT,
    grade_subd INT,
    FOREIGN KEY(StudentId) references Student(Id)
);

delimiter |

CREATE TRIGGER update_gpa
    AFTER INSERT
    ON Grades
    FOR EACH ROW
    BEGIN
        UPDATE Student SET gpa = ((grade_bg + grade_math + grade_subd)/3) WHERE StudentId = Id;
    END;
|  

在此之后,当我尝试插入 table 学生时,我得到: “错误 1054:where 子句中的未知列 'StudentId'”

例如:

INSERT INTO Student(name, age) 
            VALUES ('Joshua', 17);

另外,当我尝试编写 "AFTER INSERT, UPDATE" 时,我从 MySQL Workbench 中收到语法错误并且不知道如何使触发器在 table 年级的插入和更新时激活。

感谢任何帮助!提前致谢!

我不太了解触发器,但我只尝试了 运行 更新语句,发现您没有定义连接:-

UPDATE Student 
INNER JOIN Grades ON Grades.StudentId = Student.Id 
SET Student.gpa = ((Grades.grade_bg + Grades.grade_math + Grades.grade_subd)/3);