ORACLE认证系统概述(14)

http://www.itjxue.com  2015-07-17 01:05  来源:未知  点击次数: 

  六、数据库触发器

  1. 触发器介绍

  数据库触发器(database trigger)是存储在数据库中的过程,当表被修改时它隐式地被激发(执行)。在ORACLE中允许在对表发出INSERT、UPDATE或DELETE语句时隐式地执行所定义的过程,这些过程称为数据库触发器。触发器存储在数据库中,并与所相关表分别存储。触发器仅可在表上定义。在许多情况中触发器用于提供很高级的专用数据库管理系统,来补充ORACLE的标准功能。触发器一般用于:

  自动地生成导出的列值;

  防止无效的事务;

  实施更复杂的安全性检查

  在分布式数据库中实施跨越结点的引用完整性;

  实施复杂的事务规则;

  提供透明事件日志;

  提供高级的审计;

  维护同步表复制;

  收集关于存取表的统计。

  注意:数据库触发器与SQL*FORMS触发器之间的差别。数据库触发器是定义在表上,存储在数据库中,当对表执行INSERT、UPDATE或DELETE语句时被激发,不管是谁或哪一应用发出。而SQL*FORMS触发器是SQL*FORM应用的部分,仅当在指定SQL*FORMS应用中执行一个指定触发器点时才被激发。

  触发器和说明性完整性约束都可用于约束数据的输入,但它们之间有一定区别:

  说明性完整性约束是关于数据库总是为“真”的语句。一个完整性约束应用于表中已有数据和操纵表的任何语句。

  而触发器约束事务不可应用于在定义触发器前已装入的数据,所以它不能保证表中全部数据服从该触发器的规则。触发器实施瞬时约束,即在数据改变时实施一约束。

  2. 触发器的组成:

  一个触发器有三个基本部件:触发事件或语句、触发器的限制、触发器动作。

  触发事件或语句:为引起触发器激发的SQL语句,是对指定表INSERT、UPDATE或DELETE语句。

  触发器限制:为一布尔表达式,当触发器激发时该条件必须为TRUE。触发器的限制是用WHEN子句来指定。

  触发器的动作:为一个PL/SQL块(过程),由SQL语句和PL/SQL语句组成。当触发语句发出,触发器的限制计算得TRUE时,它被执行。在触发器动作的语句中,可使用触发器的处理的当前行的列值(新值、老值),使用形式为:

  NEW.列名 引用新值

  OLE.列名 引用老值

  在定义触发器时可指定触发器动作执行次数:受触发语句影响每一行执行一次或是对触发语句执行一次。

  对每一触发语句可有四种类型触发器:

  行触发器:对受触发语句所影响的每一行,行触发器激发一次。

  语句触发器:该类型触发器对触发语句执行一次,不管其受影响行数。

  定义触发器可以指定触发时间,指定激发器动作的执行相对于触发语句执行之后或之前。

  BEFORE触发器:该触发器执行触发器动作是在触发语句执行之前。

  AFTER触发器:该触发器执行触发器动作是在触发语句执行之后。

  一个触发器可处于两种不同的方式:使能触发器和使不能触发器。

  使能触发器:只要当触发语句发出,触发器限制计算为TRUE,这种类型的触发器执行其触发动作。

  使不能触发器:这种触发器即使其触发语句被发出,触发器限制计算为TRUE,也不执行触发器动作。

  触发器的源代码存储在数据库中,在第一次执行时,触发器的源代码被编译,存储在共享池中。如果触发器从共享池中挤了,再使用时必须再重新编译。

(责任编辑:IT教学网)

更多

推荐Oracle认证文章