学生表如下所示
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
发布于 2020-01-29 19:19:03
我认为您需要一个设置sub3值的before insert触发器。
这将是:
create trigger subject_total
before insert on student
for each row
set new.sub3 = new.sub1 + new.sub2;在触发器中,您可以使用伪表new访问要插入的值。
发布于 2020-01-29 19:29:27
如果sub3必须总是等于sub1和sub2的和,我建议删除静态字段,并将其替换为计算后的字段:
ALTER TABLE subject_total
DROP COLUMN sub3,
ADD COLUMN sub3 INT GENERATED ALWAYS AS (sub1 + sub2) STORED;而且你根本不需要在触发器中。
发布于 2020-01-29 19:56:06
修改您的架构,如下所示:
student
student_id, student_details, etc
student_marks
student_id, subject_id, score现在问题是微不足道的,请注意,在这里存储派生数据没有好处,因此不需要触发器。
https://stackoverflow.com/questions/59965809
复制相似问题