- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]Oracle触发器详解
Oracle触发器详解
?
本篇主要内容如下:
8.1 触发器类型
8.1.1 DML触发器
8.1.2 替代触发器
8.1.3 系统触发器
8.2?创建触发器
8.2.1 触发器触发次序
8.2.2 创建DML触发器
8.2.3 创建替代(INSTEAD OF)触发器
8.2.3 创建系统事件触发器
8.2.4 系统触发器事件属性
8.2.5 使用触发器谓词
8.2.6 重新编译触发器
8.3?删除和使能触发器
8.4?触发器和数据字典
8.5?? 数据库触发器的应用举例
?
触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。
8.1?触发器类型
??? 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。 所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类 似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务 规则的约束,或用来监视对数据库的各种操作,实现审计的功能。
?
8.1.1 DML触发器
??? ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。
?
8.1.2 替代触发器
??? 由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。
?
8.1.3 系统触发器
ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。
?
触发器组成:?
l???????? 触发事件:引 起触发器被触发的事件。 例如:DML语句(INSERT, UPDATE, DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象)、数据库系 统事件(如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。
l???????? 触发时间:即该TRIGGER 是在触发事件发生之前(BEFORE)还是之后(AFTER)??发,也就是触发事件和该TRIGGER 的操作顺序。
l???????? 触发操作:即该TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事情。 例如:PL/SQL 块。
l???????? 触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,才会执行触发操作。
l???????? 触发条件:由WHEN子句指定一个逻辑表达式。只有当该表达式的值为TRUE时,遇到触发事件才会自动执行触发器,使其执行触发操作。
l???????? 触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。
语句级(STATEMENT)触发器:是指当某触发事件发生时,该触发器只执行一次;
行级(ROW)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次。
编写触发器时,需要注意以下几点:
l???????? 触发器不接受参数。
l???????? 一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。
l???????? 在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。
l????????触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。
l???????? 在触发器的执行部分只能用DML语句(SELECT、INSERT、UPDATE、DELETE),不能使用DDL语句(CREATE、ALTER、DROP)。
l???????? 触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。
l???????? 在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。
l???????? 在触发器主体中不能申明任何Long和blob变量。新值new和旧值old也不能是表中的任何long和blob列。
l???????? 不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法
您可能关注的文档
- [计算机软件及应用]E_handbook下篇.doc
- [计算机软件及应用]flash基础教程第九章.ppt
- [计算机软件及应用]Hibernate_学习笔记.doc
- [计算机软件及应用]IE属性设置20120922.ppt
- [计算机软件及应用]IIS NET SQL安装1.ppt
- [计算机软件及应用]iPhone开发教程之重新构建 iPhone 聊天应用程序一.ppt
- [计算机软件及应用]International Finance-2011summer-Lec 1-Foreign Exchange Market Overview and Exchange Rate-S.ppt
- [计算机软件及应用]j2se.pdf
- [计算机软件及应用]java web知识精华.doc
- [计算机软件及应用]JavaEE 编程技术.ppt
文档评论(0)