欢迎来到天天文库
浏览记录
ID:40561636
大小:181.57 KB
页数:20页
时间:2019-08-04
《oracle触发器应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Oracle触发器介绍与应用目录第1章触发器的介绍21.1概念21.2功能2第2章触发器的类型32.1DML触发器32.2替代触发器32.3系统事件触发器3第3章创建触发器及应用43.1触发器触发次序43.2创建DML触发器53.3创建替代(INSTEADOF)触发器83.4创建系统事件触发器103.5使用触发器谓词143.6重新编译触发器14第4章删除和使能触发器154.1删除触发器154.2禁用或启用触发器15第5章触发器和数据字典16第6章编写触发器注意事项17第1章触发器的介绍1.1概念触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过
2、程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,而是由一个事件来启动运行。即触发器是当某个时间发生时自动地隐式运行。1.2功能l允许/限制对表的修改l自动生成派生列,比如自增字段l强制数据一致性l提供审计和日志记录l防止无效的事务处理l启用复杂的业务逻辑第1章触发器的类型数据操纵语言(DML)触发器、替代(INSTEADOF)触发器、系统事件触发器。2.1DML触发器ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。2.2替代触发器由于在ORACLE里,不能直接对由两个以上的表
3、建立的视图进行操作。所以给出了替代触发器。它就是ORACLE专门为进行视图操作的一种处理方法。2.3系统事件触发器ORACLE10G提供的系统事件触发器可以在DDL或数据库系统上被触发。DDL指的是数据定义语言,如CREATE、ALTER及DROP等。而数据库系统事件包括数据库服务器的启动或关闭,用户的登录与退出、数据库服务错误等。触发器的组成1.触发事件:引起触发器被触发的事件。例如:DML语句(INSERT,UPDATE,DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象)、数据库系统
4、事件(如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。2.触发时间:即该TRIGGER是在触发事件发生之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该TRIGGER的操作顺序。3.触发操作:即该TRIGGER被触发之后的目的和意图,正是触发器本身要做的事情。例如:PL/SQL块。4.触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,才会执行触发操作。5.触发条件:由WHEN子句指定一个逻辑表达式。只有当该表达式的值为TRUE时,遇到触发事件才会自动执行触发器,使其执行触发操作。6.触发频率:说明触发器内定
5、义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。第1章创建触发器及应用创建触发器的一般语法是:CREATE [OR REPLACE] TRIGGER trigger_name{BEFORE
6、 AFTER }{INSERT
7、 DELETE
8、 UPDATE [OF column [, column …]]}[OR {INSERT
9、 DELETE
10、 UPDATE [OF column [, column …]]}...]ON [schema.]table_name
11、 [schema.]view_name [REFERENCING
12、{OLD [AS] old
13、 NEW [AS] new
14、 PARENT as parent}][FOR EACH ROW ][WHEN condition]PL/SQL_BLOCK
15、 CALL procedure_name;其中:BEFORE和AFTER指出触发器的触发时序分别为前触发和后触发方式,前触发是在执行触发事件之前触发当前所创建的触发器,后触发是在执行触发事件之后触发当前所创建的触发器。FOREACHROW选项说明触发器为行触发器。行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操作影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合
16、触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器。当省略FOREACHROW选项时,BEFORE和AFTER触发器为语句触发器,而INSTEADOF触发器则只能为行触发器。REFERENCING子句说明相关名称,在行触发器的PL/SQL块和WHEN子句中可以使用相关名称参照当前的新、旧列值,默认的相关名称分别为OLD和NEW。触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。WHEN子句说明触发约束条件。Condition为一个逻辑
此文档下载收益归作者所有