深入了解 Oracle 触发器的类型(oracle触发器类型)
Oracle 触发器是一种数据库对象,能够让你编写的指令在某个给定的事件发生时自动执行,有三种不同的触发器类型。 本文将针对这三种触发器类型做深入了解,包括其作用机制以及操作的 SQL 代码示例。
首先,关于 Oracle 触发器的三种类型,它们分别是:行级触发器、表级触发器和数据库级触发器。
* 行级触发器由 Oracle 在每行被改变时执行 SQL 语句实现,它可以被应用于 DML 语句,如 INSERT、DELETE 和 UPDATE,是最常用最实用的触发器。
下面是创建行级触发器的一个简单示例。
“`sql
CREATE OR REPLACE TRIGGER update_trigger
BEFORE INSERT or UPDATE
ON tablename
FOR EACH ROW
BEGIN
IF :new.qty > 100 THEN
:new.qty := _old.qty;
END IF;
END;
* 表级触发器由 Oracle 在操作之前或之后执行,它可以被应用于 DDL 语句,如 DROP、ALTER 和TRUNCATE,它仅在操作发生时被执行一次。
下面是创建表级触发器的一个简单的示例。
```sqlCREATE OR REPLACE TRIGGER trigger_name
BEFORE DROP OR ALTER ON tablename
DECLARE var number;
BEGIN SELECT COUNT(*) INTO var FROM tablename;
IF var > 0 THEN -- Raised error exception
raise_application_error(-20000,'Table not allowed to DROP or ALTER'); END IF;
END; ```
* 数据库级触发器会在数据库中发生某些事件时被触发,例如当有用户登录时,可以用来检查被登录者的角色、地区等。
下面是创建数据库级触发器的一个简单的示例。
```sqlCREATE OR REPLACE TRIGGER trigger_name
AFTER LOGON ON DATABASEBEGIN
IF (ORIGINAL_LOGIN() = 'HR') THEN -- DO Something
END IF;END;
```
总结而言,Oracle 触发器有三种不同的类型:行级触发器、表级触发器和数据库级触发器。每种类型都有它们自己独特的作用,且操作简单,给管理数据库带来便利。