OraclePLSQL编程语法详解触发器.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
65 第八章 触发器 触发器是许多关系数据库系统都提供的一项技术。在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 系统的启动与关闭等。 触发器组成:  触发事件:即在何种情况下触发TRIGGER; 例如:INSERT, UPDATE, DELETE。  触发时间:即该 TRIGGER 是在触发事件发生之前(BEFORE)还是之后(AFTER)触 发,也就是触发事件和该TRIGGER 的操作顺序。  触发器本身:即该TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事情。 例如:PL/SQL 块。  触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和 行级(ROW)触发器。 语句级(STATEMENT)触发器:是指当某触发事件发生时,该触发器只执行一次; 行级(ROW)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触 发器都单独执行一次。 - 65 - 66 §8.2 创建触发器 创建触发器的一般语法是: CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE [OF column [, column …]]} ON [schema.] table_name [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}] [FOR EACH ROW ] [WHEN condition] trigger_body; 其中: BEFORE 和AFTER 指出触发器的触发时序分别为前触发和后触发方式,前触发是在 执行触发事件之前触发当前所创建的触发器,后触发是在执行触发事件之后触发当前所创建 的触发器。 FOR EACH ROW 选项说明触发器为行触发器。行触发器和语句触发器的区别表现在: 行触发器要求当一个DML 语句操作影响数据库中的多行数据时,对于其中的每个数据行, 只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事 件,当它符合约束条件时,激活一次触发器。当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为语句触发器,而INSTEAD OF 触发器则为行触发器。 REFERENCING 子句说明相关名称,在行触发器的PL/SQL 块和WHEN 子句中可以 使用相关名称参照当前的新、旧列值,默认的相关名称分别为 OLD 和 NEW 。触发器的 PL/SQL 块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN 子句中则

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档