伴随移动互联技术的应用高潮,其他学院的同学纷纷意识到计算机专业的美好就业前景,因此有部分同学开始转专业进入“CS"学院。现在教务处遇到一个困难:由于该生在其他专业已经修了部分课程,转专业,不能直接删除原来的选课记录(这些已修合格的课程可以通过学分认证到新专业),因此需要在选课表中保留该同学原来的成绩,并添加新专业必须完成的课程。请使用触发器完成学生转专业后对选课信息的添加工作。
时间: 2024-02-26 20:53:31 浏览: 17
好的,我了解了您的问题。为了完成这个任务,我们需要创建一个触发器,它会在学生转专业时触发,自动将原有课程的成绩记录到新课程中。以下是一个大致的触发器代码示例:
```
CREATE TRIGGER transfer_courses
AFTER INSERT ON student_transfer
FOR EACH ROW
BEGIN
INSERT INTO course_history (student_id, course_id, grade)
SELECT NEW.student_id, course_id, grade
FROM course_history
WHERE student_id = OLD.student_id;
INSERT INTO course_history (student_id, course_id, grade)
SELECT NEW.student_id, course_id, NULL
FROM required_courses
WHERE major_id = NEW.major_id
AND course_id NOT IN (
SELECT course_id FROM course_history
WHERE student_id = NEW.student_id
);
END;
```
这个触发器会在学生转专业时触发,将原有课程的成绩记录到新课程中,并添加新专业必须完成的课程。触发器将在 student_transfer 表中插入一条记录时执行。该表中应该包含学生 ID 和目标专业 ID。当触发器执行时,它将复制原有课程的成绩记录到新的 course_history 表中,然后添加新专业必须完成的课程,如果学生已经修读过这些课程,则不会重复添加。