用SQL server写:在teaching数据库中,为SC表创建一个Insert触发器(SC_Insert),当SC表录入课程成绩时,如果成绩不低于60分, --则Student表中该学号的总学分SCredit字段值自动累加并更新。, --然后,将现有记录的SCredit字段值修改为0)
时间: 2024-02-15 19:01:30 浏览: 24
好的,以下是在SQL Server中为teaching数据库中的SC表创建一个Insert触发器(SC_Insert)的SQL语句,实现当SC表录入课程成绩时,如果成绩不低于60分,则Student表中该学号的总学分SCredit字段值自动累加并更新,然后将现有记录的SCredit字段值修改为0:
```
CREATE TRIGGER SC_Insert
ON SC
AFTER INSERT
AS
BEGIN
DECLARE @sno CHAR(10), @cno CHAR(10), @grade INT, @credit INT, @s_credit INT;
SELECT @sno = i.sno, @cno = i.cno, @grade = i.grade, @credit = i.credit
FROM inserted i;
SELECT @s_credit = Credit FROM Student WHERE Sno = @sno;
IF @grade >= 60
BEGIN
UPDATE Student SET Credit = Credit + @credit, SCredit = SCredit + @credit WHERE Sno = @sno;
END
ELSE
BEGIN
UPDATE Student SET SCredit = SCredit WHERE Sno = @sno;
END
UPDATE SC SET SCredit = 0 WHERE Sno = @sno AND Cno = @cno;
END;
```
该触发器会在每次向SC表中插入新的记录时被触发,然后根据插入的成绩是否不低于60分进行操作:如果成绩不低于60分,则会自动累加该学生的总学分和已修学分;否则,只会更新已修学分,而总学分保持不变。最后,将SC表中现有记录的SCredit字段值修改为0,以确保该学生下一次的总学分计算不会包含该门课程的学分。