Oracle触发器使用(一):DML触发器
- DML触发器
-
- 条件谓词触发器
- INSTEAD OF DML触发器
- 复合DML触发器
Oracle数据库中的触发器(Trigger)本质上也是PL/SQL代码,触发器可以被Enable或者Disable,但是不能像存储过程那样被直接调用执行。
触发器不能独立存在,而是定义在表、视图、模式或者整个数据库上的。
定义触发器时可以指定触发器在触发事件执行之前或执行之后被激活生效。如果触发事件影响到多行数据,也可以选择是否每一行都激活。
当触发器被激活(fires)时,定义了触发器的表很可能正处于某个事务中。触发器定义语句中的SQL也遵循事务的读一致性。
- 触发器中的SQL可以看到被引用表的当前一致性读的物化视图、以及同一个事务中的任何数据变化。
- 触发器中的更新操作会等待现有数据锁被释放之后再执行。
触发器有以下几种分类:
- DML触发器(DML trigger)是定义在表或视图上、触发事件是DML操作的触发器。
- 版本交叉触发器(crossedition trigger)是一种仅在基于版本重定义(edition-based redefinition, EBR)特性下使用的DML触发器。
- 系统触发器(System trigger)是定在模式或者数据库层面、触发事件是DDL操作或者数据库维护操作的触发器。
- 条件