oracle触发器

oracle触发器

ID:37239793

大小:171.85 KB

页数:49页

时间:2019-05-20

oracle触发器_第1页
oracle触发器_第2页
oracle触发器_第3页
oracle触发器_第4页
oracle触发器_第5页
资源描述:

《oracle触发器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、[12.16]每日一句:Knowledgeisatreasure,butpracticethekeytoit.知识是一座宝库,实践是打开宝库的钥匙。Dict.cnEricHu'sTechSpace·博客园·首页·博问·闪存·新随笔·联系·订阅·管理随笔-33文章-69评论-1748ORACLEPL/SQL编程之八:把触发器说透ORACLEPL/SQL编程之八:把触发器说透大家一定要评论呀,感谢!光发表就花了我将近一个下午。本篇主要内容如下:8.1触发器类型8.1.1DML触发器8.1.2替代触发器8.1.3系统触发器8.2创建触发器8.2.1触发器触发次序8.2.2创建DML触发器8.2.

2、3创建替代(INSTEADOF)触发器8.2.3创建系统事件触发器8.2.4系统触发器事件属性8.2.5使用触发器谓词8.2.6重新编译触发器8.3删除和使能触发器8.4触发器和数据字典8.5数据库触发器的应用举例触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。8.1触发器类型触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(f

3、iring)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。8.1.1DML触发器ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。8.1.2替代触发器由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE8专门为进行视图操作的

4、一种处理方法。8.1.3系统触发器ORACLE8i提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。触发器组成:l触发事件:引起触发器被触发的事件。例如:DML语句(INSERT,UPDATE,DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象)、数据库系统事件(如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。l触发时间:即该TRIGGER是在触发事件发生之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该TRI

5、GGER的操作顺序。l触发操作:即该TRIGGER被触发之后的目的和意图,正是触发器本身要做的事情。例如:PL/SQL块。l触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,才会执行触发操作。l触发条件:由WHEN子句指定一个逻辑表达式。只有当该表达式的值为TRUE时,遇到触发事件才会自动执行触发器,使其执行触发操作。l触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。语句级(STATEMENT)触发器:是指当某触发事件发生时,该触发器只执行一次;行级(ROW)触发器:是指当某触发事件发生时,对受到该

6、操作影响的每一行数据,触发器都单独执行一次。编写触发器时,需要注意以下几点:l触发器不接受参数。l一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。l在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。l触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。l在触发器的执行部分只能用DML语句(SELECT、INSERT、UPDATE、DELETE),不能使用DDL语句(CREATE、ALTER、DROP)。l触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT

7、)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。l在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。l在触发器主体中不能申明任何Long和blob变量。新值new和旧值old也不能向表中的任何long和blob列。l不同类型的触发器(如DML触发器、INSTEADOF触发器、系统触发器)的语法格式和作用有较大区别。8.2创建触发器创建触发器的一般语法是:按Ctrl+C复制代码按

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。