PL/SQL之触发器类型

时间:2021-11-27 23:05:23

关系数据库里都会提供触发器技术。触发器在数据库里独立存在,与函数和存储过程不同,函数和存储过程都是要用户显示

的去调用,才会执行。触发器是当某个事件发生时,隐式的去执行。同时,我们应该知道触发器是不带参数的。

ORACLE 是指对表进行INSERT,UPDATE和DELETE操作或者是对视图进行类似的操作。

触发器分类:

(1)DML触发器

ORACLE可以在DML操作前或操作后进行级触发和语句级触发,这样的触发器叫做DML触发器。

(2)替代触发器

在 ORACLE 里,不能直接对由两个以上的表建立的视图进行操作,所以出现替代触发器。

(3)系统触发器

能够在 ORACLE 数据库系统的事件中进行触发事件,如控制ORACLE 系统的启动或关闭等,这种

ORACLE系统级别的触发器叫做系统触发器。

触发器组成:

触发事件:

            引起创建的触发器被触发的事件。比如,我们比较常见的事件有:

            DML语句(INSERT,UPDATE,DELETE),DDL语句(ALTER,CREATE,DROP),用户事件(退出数据库,登录数据库)等。 

触发时间:

            触发器在事件执行之前(BEFORE)或事件执行之后(AFTER)触发器执行。

触发操作:

             触发器被触发后,具体要做得事情。比如,在某个表插入新数据后,操作另外一个表更新以下状态。

触发对象:

             表、视图、模式、数据库。在这些对象上发生操作,才会执行触发器

触发条件:

             就是在WHERE后加一些逻辑,达到触发业务效果。

触发频率:

             触发频率就是触发器执行的次数。语句级(STATEMENT)触发器和行级(ROW)触发器,对应触发器影响一行或多行。

编写触发器注意事项:

触发器不接受参数;


一个表上最多可有 12 个触发器,但同一时间、同一事件、同一类型的触发器只能有一个;


一个表上的触发器越多,操作越频繁,性能受影响越大;


触发器的执行部分只能用 DML语句,不能使用 DDL 语句;


触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT),因为当触发语句部分提交等时,触发器会跟随

进行同样的操作,触发器等于瞎忙活了半天,没有效果。


触发器主体中不能申明任何Long和blob变量;


以上三个触发器语法和使用情况不同,并不具备同一语法;