未知系统变量 - MySQL

Unknown System Variable - MySQL

学生table长这样

Name varchar(255), sub1 int(11), sub2 int(11), sub3 int(11)

我创建了一个触发器来根据 sub1 和 sub2 的总和来更新 sub3,

create Trigger subject_total
after INSERT
on
student
for each row
set sub3 = sub1 + sub2;

执行上述代码时,遇到以下错误。 错误代码:1193。未知系统变量 'sub3'

数据库:MYSQL

我认为您需要一个 before insert 触发器来设置 sub3 的值。

那就是:

create trigger subject_total
before insert on student
for each row
set new.sub3 = new.sub1 + new.sub2;

在触发器中,您可以访问使用伪table new.

插入的值

如果 sub3 必须始终等于 sub1sub2 的总和,我建议删除静态字段并将其替换为计算出的字段:

ALTER TABLE subject_total
DROP COLUMN sub3,
ADD COLUMN sub3 INT GENERATED ALWAYS AS (sub1 + sub2) STORED;

而且你根本不需要触发器。

修改您的架构如下:

student
student_id, student_details, etc

student_marks
student_id, subject_id, score

现在问题很简单了,请注意,这里存储派生数据没有任何好处,因此不需要触发器。