SQL 加入一门新课程时,自动为所有学生选上该门课程,创建触发器小问题求解,在线等!

2025-06-23 06:32:30
推荐回答(2个)
回答1:

--用游标,遍历学生表,学前班水平吧,NND还网友采纳了
Create Trigger trdStudent
On C
For insert
As
Begin
    --这里做个笛卡尔积就可以了(新添加的课程都不会存在于SC表的话),这个就可以了
    Insert Into SC(sid,cid)
        Select A.sid,B.cid From S A,Inserted B
End


Create Trigger trdStudent
On C
For insert
As
Begin
    --这里做个笛卡尔积就可以了,如果课程号已经在SC表的就不插入
    Insert Into SC(sid,cid)
        Select A.sid,B.cid From S A Cross Join Inserted B
        left join SC C on B.cid=C.cid
            where c.cid is null
End


Create Trigger trdStudent
On C
For insert
As
Begin
    --如果你是一条条的添加课程,判断该课程号是否已经存在于SC,不存在则添加
    declare @cid nchar(10)
    select @cid=cid Inserted 
    if not exists(select * from sc where cid=@cid)
    Insert Into SC(sid,cid)
        Select sid,@cid From S 
End

回答2:

你可以用游标,遍历学生表,然后每读到一个学生,就往选课表日插入一条记录,这样游标循环到最后就可以了。