未知系统变量 - 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
必须始终等于 sub1
和 sub2
的总和,我建议删除静态字段并将其替换为计算出的字段:
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
现在问题很简单了,请注意,这里存储派生数据没有任何好处,因此不需要触发器。
学生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
必须始终等于 sub1
和 sub2
的总和,我建议删除静态字段并将其替换为计算出的字段:
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
现在问题很简单了,请注意,这里存储派生数据没有任何好处,因此不需要触发器。