Oracle 触发器:知晓其四种类型(oracle触发器类型)

Oracle 触发器是在表上创建的,他的作用是在该表的某个操作(INSERT,UPDATE,DELETE)发生时,它会自动执行一段规定的SQL语句,从而实现某种目的,比如:改变表数据、维护并发控制等等。Oracle 触发器一共有四种类型:

* BEFORE 触发器

BEFORE触发器可以在说明的表 操作 发生之前触发,它会在执行相应的数据操作前执行,如下所示:

“`sql

CREATE OR REPLACE TRIGGER salary_before

BEFORE INSERT OR UPDATE OR DELETE ON employee

FOR EACH ROW

BEGIN

DBMS_OUTPUT.PUT_LINE(‘salary of employee about to change!’);

END;


* AFTER触发器

AFTER触发器会在指定的表操作发生之后,立即触发,它会在相应的操作执行完毕之后立即执行,如下所示:

```sql
CREATE OR REPLACE TRIGGER salary_after
AFTER INSERT OR UPDATE OR DELETE ON employee
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('salary of employee has been changed!');
END;

* INSTEAD OF 触发器

INSTEAD OF触发器是用来处理视图的,用它可以在数据表更新前插入/删除/更新数据,就像是在视图上执行操作一样,如下所示:

“`sql

CREATE OR REPLACE TRIGGER salary_instead

INSTEAD OF INSERT OR UPDATE OR DELETE ON employee

FOR EACH ROW

BEGIN

DBMS_OUTPUT.PUT_LINE(‘salary of employee is updating!’);

END;


* COMPOUND 触发器

COMPOUND触发器是用来把组合AFTER 和BEFORE触发器的功能,它可以把多段SQL包含在一个触发器中,比如下面的例子:

```sql
CREATE OR REPLACE TRIGGER salary_compound
INSTEAD OF UPDATE OR DELETE ON EMPLOYEE
FOR EACH ROW
DECLARE
BEGIN
IF UPDATING THEN
DBMS_OUTPUT.PUT_LINE('salary of employee about to update!');
ELSE
DBMS_OUTPUT.PUT_LINE('salary of employee about to delete!');
END IF;
END;
```

通过以上四种类型可以看出,Oracle触发器在应用中有着重要作用,它可以帮助我们自动执行一段SQL语句,从而提高数据库操作的效率,比如在记录员工的工资变动之前先进行确认等等。

数据运维技术 » Oracle 触发器:知晓其四种类型(oracle触发器类型)