在课程表Courses_×××上定义一个触发器,当向表中新增一条记录时,自动在选修表Score_×××中为部分学生生成对该门课程的选修记录,成绩为随机生成的整数,范围在0-100之间。
时间: 2024-03-16 16:45:41 浏览: 60
你好,以下是在Courses_×××表中新增一条记录时自动在选修表Score_×××中为部分学生生成对该门课程的选修记录的触发器的示例代码:
```
CREATE TRIGGER trg_add_course
AFTER INSERT ON Courses_×××
FOR EACH ROW
BEGIN
DECLARE student_id INT;
DECLARE grade INT;
DECLARE num_students INT DEFAULT 10; -- 生成选修记录的学生数目
-- 从学生表中随机选择num_students个学生
SELECT student_id FROM Students_×××
ORDER BY RAND()
LIMIT num_students INTO student_id;
-- 为选中的学生在选修表中插入选修记录,成绩为随机生成的整数
WHILE num_students > 0 DO
SET grade = FLOOR(RAND() * 101);
INSERT INTO Score_××× (student_id, course_id, grade)
VALUES (student_id, NEW.course_id, grade);
SET num_students = num_students - 1;
END WHILE;
END;
```
其中,`Courses_×××`表和`Score_×××`表分别为课程表和选修表,`Students_×××`表为学生表,`student_id`和`grade`为临时变量,用于存储随机生成的学生ID和成绩。这个触发器会在向`Courses_×××`表中插入新记录时触发,随机选择`num_students`个学生,并在选修表中为这些学生插入选修记录。选修记录的成绩为随机生成的整数,范围在0-100之间。
阅读全文