第25讲触发器的类型,建立,修改,删除,应用

第25讲触发器的类型,建立,修改,删除,应用

ID:35428914

大小:64.87 KB

页数:12页

时间:2019-03-24

第25讲触发器的类型,建立,修改,删除,应用_第1页
第25讲触发器的类型,建立,修改,删除,应用_第2页
第25讲触发器的类型,建立,修改,删除,应用_第3页
第25讲触发器的类型,建立,修改,删除,应用_第4页
第25讲触发器的类型,建立,修改,删除,应用_第5页
资源描述:

《第25讲触发器的类型,建立,修改,删除,应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第25讲触发器的类型,建立,修改,删除,应用目的:1.掌握触发器的概念,类型,作用2.掌握各种类型触发器的创建,修改,删除3.掌握编写复杂触发器的应用。授课内容:1・触发器概念触发器是一种特殊的PL/SQL程序块,它不用我们显式调用它,不像存储过程,函数,需要我们显式调用它,当某个条件或事件发生时,触发器自动运行。2.创建,修改,删除触发器权限创建触发器,要求用户必须有更改表的权限,ALTERANYTABLE权限,以及CREATEANYTRIGGER权限,为了在其他方案屮创建触发器,用户必须具有CREATEANYTRIGGER权限。修改触发器必须具有A

2、LTERANYTRIGGER权限。3・触发器类型:1)行级触发器(ROWLEVELtrigger):最常用的触发器。对DML语句中影响的每一行执行一次。在createtrigger语句中使用FOREACHROW子句建立行级触发器。2)语句级触发器(StatementLevelTrigger)DML语句运行才执行一次,语句级触发器是使用createtrigger创建时默认的触发器类型。语句级触发器一般不常用于与数据相关的活动。通常用于强制实施一个能在一个表上执行各种操作的额外安全措施。如:一条insert语句在EMP表上插入了100条记录,但这表的语句级

3、触发器只执行一次。3)BEFORE触发器在insert,update,deleteZ前运行。可以引用DML影响记录的I口值和新值。I口值表示在DML语句执行之前的数据。新值表示在DML语句更新后的表的数据。旧值用:OLD.字段名新值用:NEW.字段名4)AFTER触发器:在insert,update,delete语句之后运行。可以引用DML影响记录的旧值和新值。旧值用:OLD・字段名新值用:NEW.字段名在审计应用程序中经常使用AFTER行级触发器,因为直到行被修改才触发这些触发器。行的成功修改表明数据己经通过表的各种约朿。5)INSTEADOF触发器

4、:使用INSTEADOF触发器,告诉Oracle要作的事情,而不是执行调用触发器的操作。6)模式触发器(Schematrigger)可以在模式级操作上建立触发器,如:createtable,altertable,droptable,rename,revoke,grant等操作上建立触发器。模式级触发器的作用为:阻止执行DDL操作或发生DDL操作吋进行额外的安全监控。7)数据库级触发器(DatabaseLevelTrigger)可以在数据库级事件上建立触发器,如错误,注册,注销,关闭,启动等事件。使用数据库级触发器进行自动的数据库维护,或审计活动。1.触

5、发器创建和修改语法:(只给出最常用的触发器类型定义)CREATEORREPLACETRIGGERlschema_name.Jtrigger_name{BEFORE

6、AFTER

7、INSTEADOF}{delete

8、insert

9、update[ofcolumn_name,...]fordelete

10、insert

11、update[ofcolumn,....]]ONtable_name[FOREACHROW][WHENcondition][DECLARE]变量定义;BEGIN语句;QOQEND;1)触发器的名字在方案下必须唯一。不能与表,视图,存储过程,函数等同

12、名。2)触发器的名字必须吋合法的Oracle标识,长度为30字符以内。3)使用FOREACHROW为行级触发器,否则为语句级触发器。4)使用WHEN子句进一步限定触发器执行,当满足条件时才执行触发器。5)WHEN子句的条件中可以使用新值,旧值。在WHEN条件中引用新值和IH值不用使用:OLD,:NEW,直接使用NEW.字段名,OLD.字段名。6)在PL/SQL中使用新值和旧值,必须使用冒号开头的NEW和OLD.:NEW,:OLDo7)触发器中的事务处理类型为:inserting,deleting,updating.当在一个触发器屮同时使用2种以上的DM

13、L语句时,应该判断执行的是什么操作。如果是insert语句,则INSERTING为true,如果是update语句,则UPDATING为true,如果执行DELETE语句,则DELETING为true.—般使用IFinsertingTHEN语句进行判断。8)不要在触发器中编写大段的代码,应该将代码写在存储过程中,在触发器中调用存储过程。Call存储过程名(参数,oooo);最简单的触发器创建语法:createorreplacetriggerdocument_insert_eventafterinsertonDocumentforeachrowdecla

14、rebeginend;触发器创建的例子:createorreplacetriggerTrigg

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

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

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