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