SQL 触发器实现学生成绩管理系统自动更新
使用 SQL 触发器实现学生成绩管理系统自动更新
本文将介绍如何使用 SQL 触发器实现学生成绩管理系统中三个表的自动更新功能,涉及的表如下:
- 学生情况表 xsqk (xh 学号, xm 姓名, xb 性别, zy 专业, xib 系别, csrq 出生日期, zxf 总学分, bj 班级)
- 学生课程表 xskc (kch 课程号, kcm 课程名, kkxq 开课学期, xs 学时)
- 学生成绩表 xscj (xh 学号, kch 课程号, cj 成绩, xf 学分)
我们将分别实现以下功能:
- 添加学生成绩时更新总学分: 当在
xscj表中添加一条学生选课成绩信息后,自动更新该学生在xsqk表中总学分的信息。 - 删除课程时删除对应成绩记录: 当在
xskc表中删除某门课程的记录后,对应xscj表中所有的选课记录都会删除。 - 更新课程信息时更新对应成绩记录: 当在
xskc表中更新某门课程的课程号之后,对应xscj表中所有的课程号都会更新。
触发器代码
1. 添加学生成绩时更新总学分
CREATE TRIGGER tri_ins_xscj
AFTER INSERT ON xscj
FOR EACH ROW
UPDATE xsqk
SET zxf = zxf + NEW.xf
WHERE xsqk.xh = NEW.xh;
2. 删除课程时删除对应成绩记录
CREATE TRIGGER tri_delete_xskc
AFTER DELETE ON xskc
FOR EACH ROW
DELETE FROM xscj
WHERE xscj.kch = OLD.kch;
3. 更新课程信息时更新对应成绩记录
CREATE TRIGGER tri_update_xskc
AFTER UPDATE ON xskc
FOR EACH ROW
UPDATE xscj
SET kch = NEW.kch
WHERE xscj.kch = OLD.kch;
总结
通过创建上述三个触发器,我们可以实现学生成绩管理系统中数据自动更新的功能,简化了数据维护工作,提高了数据一致性。
原文地址: https://www.cveoy.top/t/topic/nSJU 著作权归作者所有。请勿转载和采集!