深入理解Oracle中的触发器类型(oracle触发器类型)
Oracle触发器是Oracle数据库中非常重要的一种技术手段,是对表数据进行增删改时自动执行的程序段,在OracleDatabase中支持五种不同的触发器类型,分别是表触发器、行触发器、 Before触发器、 After触发器和级联触发器,具体一一介绍如下:
1.表触发器:表触发器是只有一个,当应用程序对这个表发出INSERT、UPDATE或DELETE语句时,表上的触发器就会自动地执行,可以对某表中的某些列定义条件,当满足此条件时,该触发器就会被触发。
语法:
CREATE TRIGGER trigger_name
ON table_name[{BEFORE | AFTER}]
{INSERT | UPDATE | DELETE} [AS]
[...]
2.行触发器:行触发器与表触发器基本类似,不同点在于它针对每一条记录操作,可以在表中的每一条记录上定义一个触发器,可以针对某个记录定义条件,当满足此条件时,该触发器就会被触发。
语法:
CREATE TRIGGER trigger_name
ON table_nameFOR EACH ROW
[{BEFORE | AFTER}] {INSERT | UPDATE | DELETE}
[AS] [...]
3. Before 触发器:Before触发器是在操作发生前,事务执行并提交之前就被触发;
语法:
CREATE OR REPLACE TRIGGER trig_name
before INSERT on table_name
FOR EACH ROWBEGIN
-- ...END;
4. After 触发器:After触发器是在表上的DML操作完成之后被触发;
语法:
CREATE OR REPLACE TRIGGER trig_name
after INSERT on table_name
FOR EACH ROWBEGIN
-- ...END;
```
5.级联触发器:级联触发器是一种特殊的触发器,其特点是在主表上发生操作时会联动另外一个表上已定义的触发器,在主表的删除、更新、插入操作时,会被级联触发器触发。
语法:
CREATE OR REPLACE TRIGGER trig_name
after INSERT
on maintable_name
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
when (condition)
BEGIN
— …
END;
以上为Oracle中五种不同的触发器类型的介绍,从各类触发器的介绍我们可以看出,Oracle的触发器具有多种触发条件,非常灵活,可以帮助我们针对某一操作时对多个表上记录进行自动改变,可以有效地完成复杂的业务数据维护,帮助我们实现数据一致性和数据完整性,提高业务程序执行效率。