create trigger trg_add_course on Courses_8208210621 after insert as declare @cno int set @cno = (select Cno from inserted) insert into Score_8208210621 (Sno, Cno, Score) select top 10 sno, @cno, cast(rand() * 100 as int) from Students_8208210621 order by newid() go
时间: 2024-04-06 19:30:44 浏览: 68
这是一个触发器(trigger),用于在 Courses_8208210621 表中插入新的课程记录后,自动向 Score_8208210621 表中插入与该课程关联的学生成绩记录。触发器的具体实现为:首先获取插入的课程编号(Cno),然后从 Students_8208210621 表中随机选取 10 个学生,并将他们的学号(Sno)和该课程编号(@cno)插入到 Score_8208210621 表中,同时生成一个随机分数(Score)。这个触发器可以在数据库中自动化地为每个新添加的课程生成一个与之对应的成绩记录。
相关问题
解释下列代码create trigger trg_add_course on Courses_8208210621 after insert as declare @cno int set @cno = (select Cno from inserted) insert into Score_8208210621 (Sno, Cno, Score) select top 10 sno, @cno, cast(rand() * 100 as int) from Students_8208210621 order by newid() go
这段代码创建了一个名为"trg_add_course"的触发器,它在"dbo.Courses_8208210621"表插入数据后触发。该触发器的主要功能是向"Score_8208210621"表中插入数据,其中包括学生的学号(Sno)、课程编号(Cno)和一个随机分数(Score)。具体来说,这个触发器在插入数据时,通过"inserted"表获取新插入的课程编号"Cno",并将该编号赋值给"@cno"变量。然后,它从"Students_8208210621"表中随机选择10个学生的学号,同时将"@cno"和一个随机分数插入到"Score_8208210621"表中。最后,它通过"order by newid()"语句来随机排序,保证每次插入的学生不同。
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 中插入数据时,会自动触发该触发器。触发器的作用是在选修表 Score_8208210915 中为随机选出的 10 个学生插入选修记录,成绩随机生成。具体来说,当插入一条记录时,首先从 inserted 表中获取课程编号 Cno,然后从学生表 Students_8208210915 中随机选出 10 个学生,将其编号 Sno 和课程编号 Cno 以及随机生成的成绩 Score 插入到选修表 Score_8208210915 中。其中,SET @Score = ABS(CHECKSUM(NEWID())) % 101; 会生成一个 0~100 之间的随机数作为成绩。
阅读全文