Oracle Database 10g基础教程(第二版) 教学课件 作者 978 7 302 15311 5 ch14.ppt

Oracle Database 10g基础教程(第二版) 教学课件 作者 978 7 302 15311 5 ch14.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 触发器 本章概述 触发器是一种特殊的过程,但是用户不能直接调用触发器。触发器是当特定事件出现时自动执行的代码块。使用触发器可以大大增强Oracle的默认功能,进而提供高度可定制的数据库。用户不会接收到Oracle正在执行触发器的指示,除非触发器导致了开发人员不能正确处理的错误。 本章将介绍触发器技术。 本章要点 了解触发器的特点和作用 理解触发器的组成部分 掌握触发器的类型和应用 理解触发器的系统事件的应用 了解触发器的用户事件的特点 教学过程 14.1 概述 14.2 语句触发器 14.3 行触发器 14.4 instead of触发器 14.5 系统事件触发器 14.6 用户事件触发器 14.7 禁用触发器和事务处理 14.8 查看触发器信息 14.9 事件属性函数 14.1 概述 使用触发器可以完成的功能如下: 允许或限制对表的修改; 自动生成派生列; 强制数据一致性; 提供审计和日志记录; 防止无效的事务处理; 启用复杂的业务逻辑。 在Oracle系统中,触发器有4个组成部分,即触发器名称、触发语句、触发器限制和触发操作。下面详细介绍这些组成部分。 触发器名称 触发器名称就是触发器的名称。数据库中的每一个对象都有名称,触发器对象也不例外。一般应该采用描述性名称来定义触发器名称。在触发器名称中,应该包括触发器执行的时间、执行的操作、涉及的表和列等。 下面是一个定义触发器部分语句的示例: create trigger biufer_emp_empno 触发语句 触发语句就是那些导致Oracle执行触发器的事件。触发器事件可以是下面的内容: 表和一些视图上的数据操纵语言语句,例如insert、update、delete; 模式对象上的数据定义语言语句,例如create、alter、drop; 数据库的启动和关闭; 系统错误; 各种系统活动。 触发器限制 即使导致触发器激活的事件发生了,但是也不意味着Oracle就会执行它。激活事件发生之后,触发器首先判断在触发器上是否存在限制,然后才会在执行触发器之间评估所有的限制。 某个限制条件可能如下: when(new_value.empno7782) 触发操作 触发操作是触发器的主体。当发生如下两件事情时Oracle才会执行代码块: 使用了合适的语句; 如果提供了触发器限制,则评估为真。 触发器的类型 Oracle系统有5种类型的触发器。每一种类型的触发器都可以完成不同的任务。这5种类型的触发器分别是:语句触发器、行触发器、instead of触发器、系统事件触发器和用户事件触发器。 本章后面几节将详细介绍不同类型的触发器的特点。 14.2 语句触发器 语句触发器是在表上或某些视图上执行的特定语句的触发器。语句触发器能够与insert、update或delete语句或这些语句的任意组合关联。用户既可以在表的insert或update语句上使用单独的触发器,也可以在表的insert和update语句的组合上使用触发器,甚至可以在单独的表上拥有多个insert语句触发器。 创建语句触发器 用户可能希望在表上创建进行安全检查的insert、update或delete语句触发器,以便根据用户的具体业务规则验证正在进行操作的用户是否具有指定的权限。 这种类型的简单触发器如图14-1所示。 级联触发器 这里需要考虑的是级联触发器的概念。这个概念意味着用户触发器的操作将会导致另一个触发器激活,以此类推。如果用户有3个表A、B和C。在表A上有一个insert触发器,它会向表B中插入一行。而在表B上有一个向表C插入一行的触发器,那么这就是级联触发器。 在开发应用程序时,一定要注意这种现象,因为这种级联可能会对性能产生影响,甚至可能带来不可预料的后果。 修改触发器 可以使用create or replace命令更新或改变触发器。该命令可以改变触发器的主体、限制子句等。也可以从根本上重新定义触发器。如果需要,可以使用create or replace命令处理某个触发器,将其从foo表上的insert类型触发器改变为bar表上的update触发器。 为了从数据库中删除触发器,可以使用drop trigger trigger_name命令。 确定哪个语句起作用 在很多情况下,需要知道哪个语句导致了触发器被激活。如果只在一种类型的语句上建立触发器,那么这是一件非常简单的事情。但是,如果创建了一个触发器,但是该触发器针对多种类型的语句,那么想要知道是哪个语句导致了触发器的激活,这好像是很难的事情。 实际上,这也很简单,用户可以询问Oracle是哪一个语句导致了触发器被激活。所需的事情就是引用inserting、updating或deleti

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档