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;
时间: 2024-04-06 15:33:42 浏览: 15
以上代码是创建一个触发器 trg_insert_course,当向 Courses_8208210915 表中插入一条新数据时,触发器会自动向 Score_8208210915 表中插入一条学生选修课程信息。具体来说,触发器会在 AFTER INSERT 时执行。在触发器中,首先通过 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) 将学生选修课程信息插入到 Score_8208210915 表中。
相关问题
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
这是一个触发器(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()"语句来随机排序,保证每次插入的学生不同。