SQL server语句建立一个触发器,当对表SC的grade属性修改时,若分数增加了10%,则将此次操作记录到另一个表SC_U(sno,cno,Oldgrade,Newgrade)中,其中Oldgrade修改前的分数,Newgrade修改后的分数。
时间: 2024-01-14 18:02:24 浏览: 107
可以使用如下的SQL Server语句建立一个触发器:
```
CREATE TRIGGER trg_SC_grade
ON SC
AFTER UPDATE
AS
BEGIN
IF UPDATE(grade)
BEGIN
DECLARE @sno CHAR(20), @cno CHAR(20), @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
WHERE i.grade > d.grade * 1.1;
IF @@ROWCOUNT > 0
BEGIN
INSERT INTO SC_U (sno, cno, Oldgrade, Newgrade)
VALUES (@sno, @cno, @Oldgrade, @Newgrade);
END
END
END
```
解释一下以上代码的做法:
1. 触发器名称为 `trg_SC_grade`,在表 `SC` 上创建,当 `grade` 属性进行修改时触发。
2. 使用 `IF UPDATE(grade)` 判断是否真的对 `grade` 进行了修改。
3. 使用 `SELECT` 语句查询 `inserted` 和 `deleted` 表中相同的记录,获得学号、课程号、修改前的分数和修改后的分数。
4. 使用 `IF` 判断是否满足分数增加了10%的条件。
5. 如果满足条件,则将相关信息插入到 `SC_U` 表中。
阅读全文