Oracle数据库中有关触发器问题

2014-11-24 18:17:48 · 作者: · 浏览: 0

  触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。


  触发器功能


  1、 允许/限制对表的修改


  2、 自动生成派生列,比如自增字段


  3、 强制数据一致性


  4、 提供审计和日志记录


  5、 防止无效的事务处理


  6、 启用复杂的业务逻辑


  触发器种类


  触发器的种类可划分为4种:1.数据操纵语言(DML)触发器、2.替代(INSTEAD OF)触发器、3.数据定义语言(DDL)触发器、4.数据库事件触发器。


  数据操纵语言(DML)触发器:简称DML触发器,是定义在表上的触发器,创建在表上。由DML事件引发的触发器,编写DML触发器时的两点要素是: 1.确定触发的表,即在其上定义触发器的表。2.确定触发的事件,DML触发器的触发事件有INSERT、UPDATE和DELETE三种; 替代触发器,简称INSTEAD OF触发器,创建在视图上,用来替换对视图进行的删除、插入和修改操作; 数据定义语言(DDL)触发器,简称DDL触发器,定义在模式上,触发事件是数据对象的创建和修改; 数据库事件触发器,定义在整个数据库或模式上,触发事件是数据库事件.


  ORACLE产生数据库触发器的语法为:


以下是代码片段:
CREATE [OR REPLACE] TRIGGER 触发器名
  {BEFORE|AFTER|INSTEAD OF} 触发事件1 [OR 触发事件2...]
  ON 表名
  WHEN 触发条件
  [FOR EACH ROW]
  DECLARE
  声明部分
  BEGIN
  主体部分
  END;