编写触发器TR-6:阻止修改课程信息(instead of update触发器)
时间: 2024-01-21 17:19:37 浏览: 68
触发器名称:TR-6
触发器事件:INSTEAD OF UPDATE
触发器激活时间:BEFORE
触发器作用对象:课程信息表(Course_Info)
触发条件:当尝试修改课程信息时
触发操作:
```
CREATE TRIGGER TR-6
INSTEAD OF UPDATE
ON Course_Info
FOR EACH ROW
BEGIN
RAISE_APPLICATION_ERROR(-20001, '无法修改课程信息!');
END;
```
触发器功能:阻止修改课程信息。当尝试修改课程信息时,触发器会抛出一个自定义异常,提示无法修改课程信息。
相关问题
INSTEAD OF UPDATE ON STU
INSTEAD OF UPDATE ON STU是一个触发器,它可以在更新stu表时执行自定义操作。在这个触发器中,可以使用PL/SQL代码来更新stu表中的数据,也可以更新其他相关表中的数据。与BEFORE和AFTER触发器不同,INSTEAD OF触发器可以完全替代UPDATE语句,因此可以在触发器中执行自定义操作,而不是简单地更新表中的数据。
以下是一个INSTEAD OF UPDATE ON STU的示例,其中包含了更新stu表和其他相关表的操作:
```sql
CREATE OR REPLACE TRIGGER tr_stu_view
INSTEAD OF UPDATE ON stu
FOR EACH ROW
BEGIN
-- 更新Student表
UPDATE student SET SNAME = :new.SNAME WHERE SNO = :NEW.SNO;
-- 更新course表
UPDATE course SET CNAME = :new.CNAME WHERE CNO = :old.CNO;
-- 更新sc表
UPDATE sc SET GRADE = :new.GRADE WHERE SNO = :new.SNO AND CNO = :old.CNO;
END;
```
在这个示例中,当更新stu表时,触发器会执行自定义操作,即更新student、course和sc表中的数据。这些操作可以根据需要进行修改,以满足特定的业务需求。
编写触发器TR-6:阻止修改课程信息(instead of update触发器) 当修改课程表的任意字段时,提示“不能修改课程表所有信息”,并阻止修改
下面是一个基本的 SQL Server 触发器代码示例,用于阻止修改课程表的任意字段:
```sql
CREATE TRIGGER TR-6
ON 课程表
INSTEAD OF UPDATE
AS
BEGIN
RAISERROR('不能修改课程表所有信息', 16, 1)
ROLLBACK TRANSACTION
END
```
这个触发器将在 UPDATE 操作之前执行,并且通过使用 RAISERROR 函数来显示自定义错误消息。然后使用 ROLLBACK TRANSACTION 语句来撤消修改操作,防止修改课程表的任何字段。
阅读全文