SQL server语句编写一个触发器,当对表SC的grade属性修改时,若分数增加了10%,则将此次操作记录到另一个表SC_U(sno,cno,Oldgrade,Newgrade)中,其中Oldgrade修改前的分数,Newgrade修改后的分数。
时间: 2024-01-14 07:02:24 浏览: 179
可以使用以下SQL Server语句编写一个触发器实现该功能:
```sql
CREATE TRIGGER trg_SC_UpdateGrade ON SC
AFTER UPDATE
AS
BEGIN
IF UPDATE(grade) -- 判断是否修改了grade属性
BEGIN
DECLARE @sno CHAR(10), @cno CHAR(10), @Oldgrade INT, @Newgrade INT;
SELECT @sno = i.sno, @cno = i.cno, @Oldgrade = d.grade, @Newgrade = i.grade
FROM inserted i
INNER JOIN deleted d ON i.sno = d.sno AND i.cno = d.cno -- 获取修改前和修改后的属性值
IF (@Newgrade > @Oldgrade * 1.1) -- 判断分数是否增加了10%
BEGIN
INSERT INTO SC_U(sno, cno, Oldgrade, Newgrade)
VALUES (@sno, @cno, @Oldgrade, @Newgrade); -- 记录操作到SC_U表中
END
END
END
```
该触发器在表SC上创建,当对grade属性进行修改时触发。在修改前和修改后的数据中获取学生编号、课程编号、修改前的分数和修改后的分数,判断分数是否增加了10%,若是则将操作记录到SC_U表中。
阅读全文