- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 6、触发时机 BEFORE触发器和AFTER触发器在触发过程中各自执行的顺序不同。一般执行的顺序是BEFORE触发器、约束、表的DML操作和AFTER触发器。 当一个表上有多个触发器时,每个触发器都是何时触发? 10.2 DML触发器 * 触发器的限制 CREATE TRIGGER语句文本的字符长度不能超过32KB;或者,如果触发器的逻辑编码超过60行,则最好将主要代码保存到存储过程里。使用时只需从触发器中调用存储过程即可。 不要创建递归式触发器,否则,系统会因触发器与表之间的循环操作而导致内存用尽,系统崩溃。 触发器体内的SELECT语句只能为SELECT … INTO …结构,或者为定义游标所使用的SELECT语句。 触发器中不能使用数据库事务控制语句 COMMIT,ROLLBACK,SVAEPOINT语句; * 触发器的限制 由触发器所调用的过程或函数也不能使用数据库事务控制语句; 不能在触发体内使用DDL语句; 触发器中不能声明LONG, LONG RAW 类型变量,也不能在触发表的LONG或LONG RAW列上使用:new和:old; 触发器内可以读取LOB类型的列值,但不能通过:NEW修改LOB列中的数据 * 小结 [掌握] 1、理解触发器的概念及作用 2、掌握触发器的应用 * 策 划:毛应爽 课 件 制 作:毛应爽 电 话:0431E-mail地址:maoys0219@163.com 谢谢! * * 1、触发器类似于函数和过程,它们都是具有声明部分、执行部分和异常处理部分的命名PL/SQL块。 像包一样,触发器必须在数据库中以独立对象的身份存储,并且不能与包和块具有本地关系。 * * 1、触发时间说明: BEFORE:SQL语句或记录操作之前执行(一次) AFTER: SQL语句或记录操作之后执行(一次) 如果多个触发器被定义为相同的时间和相同事件, * 2、触发类型说明: 语句级触发器在每个数据修改语句执行后只调用一次,而不管这一操作将影响到多少行。 行级触发器则每修改一行数据就触发一次。 行级触发器与语句级触发器的区别:主要在于其触发的次数不同。 如果该语句只影响一行,则语句级与行级出发效果相同。 如果该语句影响多行,则行级触发的次数比语句级触发的次数多。 * * 测试语句: insert into orders(orderid,shippeddate) values(101,to_date(1-3-08 23:00,dd-mm-yy hh24:mi)); * 测试语句: insert into orders(orderid,shippeddate) values(101,to_date(1-3-08 23:00,dd-mm-yy hh24:mi)); * 测试语句: insert into orders(orderid,shippeddate) values(101,to_date(1-3-08 23:00,dd-mm-yy hh24:mi)); * * ORACLE 10g 数据库管理、应用与开发 * 主讲人:毛应爽 第10章 触发器 第10章 触发器 * 第10章 触发器 10.1 触发器概述 10.2 DML触发器 10.3 替代触发器 10.4 系统触发器 10.5 用户事件触发器 10.6 管理触发器 * 1、概念 触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接收参数,不能被调用。 2、触发器的构成 触发器名称 触发器的触发事件 触发器限制条件 触发器主体 10.1 触发器概述 * 3、创建触发器的语法格式 CREATE [OR REPLACE] TRIGGER trigger_name --触发器的触发事件 {BEFORE | AFTER | INSTEAD OF} triggering_event [WHEN trigger_condition] --限制条件 [FOR EACH ROW] --行级触发 trigger_body; --语句体 10.1 触发器概述 * 说明: trigger_name是触发器的名称, triggering_event说明了激发触发器的事件(也可能包括特殊的表或视图), ?trigger_body是触发器的代码。 注意:如果在WHEN子句中指定trigger_condition的话,则首先对该条件求值。触发器主体只有在该条件为真值时才运行。 10.1 触发器概述 * 第10章 触发器 10.1 触发器概述 10.2 DML触发器 10.3 替代触发器 10.4 系统事件触发器 10.5 用户事件触发器 10.6 管理触发器 * 10.
文档评论(0)