首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未知系统变量- MySQL

问未知系统变量- MySQL
EN

Stack Overflow用户
提问于 2020-01-29 19:11:46
回答 3查看 460关注 0票数 2

学生表如下所示

代码语言:javascript
复制
Name varchar(255), sub1 int(11), sub2 int(11), sub3 int(11)

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

代码语言:javascript
复制
create Trigger subject_total
after INSERT
on
student
for each row
set sub3 = sub1 + sub2;

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

数据库: MYSQL

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-29 19:19:03

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

这将是:

代码语言:javascript
复制
create trigger subject_total
before insert on student
for each row
set new.sub3 = new.sub1 + new.sub2;

在触发器中,您可以使用伪表new访问要插入的值。

票数 3
EN

Stack Overflow用户

发布于 2020-01-29 19:29:27

如果sub3必须总是等于sub1和sub2的和,我建议删除静态字段,并将其替换为计算后的字段:

代码语言:javascript
复制
ALTER TABLE subject_total
DROP COLUMN sub3,
ADD COLUMN sub3 INT GENERATED ALWAYS AS (sub1 + sub2) STORED;

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

票数 2
EN

Stack Overflow用户

发布于 2020-01-29 19:56:06

修改您的架构,如下所示:

代码语言:javascript
复制
student
student_id, student_details, etc

student_marks
student_id, subject_id, score

现在问题是微不足道的,请注意,在这里存储派生数据没有好处,因此不需要触发器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59965809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档