在课程表Courses_8208210915上定义一个触发器,当向表中新增一条记录时,自动在选修表Score_8208210915中为部分学生生成对该门课程的选修记录,成绩为随机生成的整数,范围在0-100之间。
时间: 2024-03-16 12:44:34 浏览: 20
以下是一段 SQL 代码,可以在课程表 `Courses_8208210915` 上定义一个触发器,当向表中新增一条记录时,自动在选修表 `Score_8208210915` 中为部分学生生成对该门课程的选修记录,成绩为随机生成的整数,范围在 0-100 之间:
```sql
-- 创建触发器
CREATE TRIGGER trg_insert_course
ON Courses_8208210915
AFTER INSERT
AS
BEGIN
DECLARE @Cno INT, @Score INT, @Sno INT;
SELECT @Cno = Cno FROM inserted;
SELECT TOP 10 @Sno = Sno FROM Students_8208210915 ORDER BY NEWID();
SET @Score = ABS(CHECKSUM(NEWID())) % 101; -- 生成一个 0~100 之间的随机数作为成绩
INSERT INTO Score_8208210915 (Sno, Cno, Score) VALUES (@Sno, @Cno, @Score);
END;
```
在上述 SQL 代码中,创建了一个名为 `trg_insert_course` 的触发器,该触发器在表 `Courses_8208210915` 中插入一条记录之后执行。使用 `DECLARE` 语句定义了三个变量 `@Cno`、`@Score` 和 `@Sno`,分别用于存储新增的课程编号、生成的随机成绩以及被选修的学生编号。使用 `SELECT @Cno = Cno FROM inserted` 语句获取新增的课程编号。使用 `SELECT TOP 10 @Sno = Sno FROM Students_8208210915 ORDER BY NEWID()` 语句获取 10 个随机的学生编号。使用 `SET @Score = ABS(CHECKSUM(NEWID())) % 101` 生成一个 0~100 之间的随机数作为成绩。最后使用 `INSERT INTO Score_8208210915 (Sno, Cno, Score) VALUES (@Sno, @Cno, @Score)` 向选修表中插入选修记录。注意,这里只为 10 个学生生成选修记录,如需更改生成记录的数量,可以修改 `TOP 10` 的值。