




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020年8月10日,第1页,第15章 触发器,Oracle Database 10g基础教程 清华大学出版社,教学目标 教学难点和重点 教学过程,2020年8月10日,第2页,教学目标,了解触发器的特点和作用 理解和掌握触发器的组成部分 理解和掌握触发器的类型和应用特点 理解和掌握触发器的系统事件的应用 理解和掌握触发器的用户事件的特点,2020年8月10日,第3页,教学难点和重点,触发器的特点和作用 触发器的组成部分 触发器的类型和应用 触发器的系统事件的应用 触发器的用户事件的特点,2020年8月10日,第4页,教学过程,15.1 概述 15.2 语句触发器 15.3 行触发器 15.4
2、 instead of触发器 15.5 系统事件触发器 15.6 用户事件触发器 15.7 禁用触发器和事务处理 15.8 查看触发器信息 15.9 事件属性函数,2020年8月10日,第5页,15.1 概述,使用触发器可以完成的功能包括: 允许或限制对表的修改 自动生成派生列 强制数据一致性 提供审计和日志记录 防止无效的事务处理 启用复杂的业务逻辑,2020年8月10日,第6页,触发器的组成,在Oracle系统中,触发器有4个组成部分: 触发器名称 触发语句 触发器限制 触发操作,2020年8月10日,第7页,触发器名称,触发器名称就是触发器的名称。数据库中的每一个对象都有名称,触发器对象
3、也不例外。一般地,应该采用描述性名称来定义触发器名称。 在触发器名称中,应该包括触发器执行的时间、执行的操作、涉及的表、涉及的列等。,2020年8月10日,第8页,触发语句,触发语句就是那些导致Oracle执行触发器的事件。触发器事件可以是下面这些内容: 表和一些试图上的数据操纵语言语句,例如insert、update、delete; 模式对象上的数据定义语言语句,例如create、alter、drop; 数据库的启动和关闭; 系统错误; 各种系统活动,2020年8月10日,第9页,触发器限制,即使导致触发器激活的事件发生了,但是也不意味着Oracle就会执行它。 激活事件发生之后,触发器首先
4、判断在触发器上是否存在限制,然后才会在执行触发器之间评估所有的限制。,2020年8月10日,第10页,触发操作,触发操作是触发器的主体。Oracle会在发生如下两件事情时,才会执行代码块: 使用了合适的语句; 如果提供了触发器限制,则评估为真。,2020年8月10日,第11页,触发器的类型,在Oracle系统中,包括了5种类型的触发器。每一种类型的触发器都可以完成不同的任务。这5种类型的触发器是: 语句触发器; 行触发器; instead of触发器; 系统事件触发器; 用户事件触发器。,2020年8月10日,第12页,15.2 语句触发器,语句触发器是在表上或某些视图上执行的特定语句的触发器
5、。语句触发器能够与insert、update或delete语句或这些语句的任意组合关联。用户既可以在表的insert或update上使用单独的触发器,也可以在表的insert和update组合上使用触发器,甚至可以在单独的表上拥有多个insert语句触发器。 用户还可以在一个表上拥有多个insert语句触发器。无论update触发器影响了多少行数据,也只会调用一次update触发器。如果在表上有多个update触发器,那么每一个触发器都会被调用一次。,2020年8月10日,第13页,15.3 行触发器,我们不仅可以建立为表上各个insert或update或delete语句激活的触发器,而且还可
6、以定义受到影响的各个行激活的触发器。这些触发器称为行触发器。 行触发器的定义方式与语句触发器类似,但是有两个例外: 第一,行触发器要在触发器定义的触发语句中包含for each row子句,还可以包含referencing子句。 第二,在beforefor each row触发器中,可以引用受到影响的行值,甚至可以在触发器中设置这些值。 行触发器的作用主要是可以让触发器的编写人员有能力为主键提供默认设置,并且还可以格式化输入表中的数据。,2020年8月10日,第14页,15.4 instead of触发器,instead of触发器是Oracle系统用来替换所使用的实际语句而执行的触发器,与导
7、致触发器激活的语句执行之前或执行之后执行的语句触发器和行触发器不同。 例如,如果在视图上执行insert操作的用户,且该视图上有instead of插入触发器,那么Oracle系统就不会执行用户的触发器。然后,用户的触发器就可以执行编码所要执行的所有操作。它可以向基本表或另外的表中插入用户数据,还可以对用户试图插入数据的事实进行日志记录,还可以从完全没有关系的表中删除数据。当然,这些操作都依赖于用户的编码。,2020年8月10日,第15页,15.5 系统事件触发器,Oracle系统还允许开发人员建立与特定系统事件相关的触发器。这些特定事件是: 数据库启动 数据库关闭 服务器错误 这些事件都是实
8、例范围的。这些触发器不像前面讲过的那些触发器一样,与特定的表或视图关联。,2020年8月10日,第16页,15.6 用户事件触发器,用户事件触发器也称为客户触发器,是能够与insert、update、delete以外的用户登录、注销、DML、DDL操作事件相关联的触发器。 我们通过一个示例,讲述如何使用用户事件触发器。在这个示例中,通过创建用户事件触发器,对用户scott所删除的所有对象进行日志记录。,2020年8月10日,第17页,15.7 禁用触发器和事务处理,到目前为止,我们已经学习了怎样使用create、create or replace和drop语句来执行与触发器有关的操作。如果希望改变触发器的主体,那么可以使用create or replace语句。 如果希望删除今后不再使用的触发器,那么可以使用drop语句。但是,如果希望临时禁用触发器,那么该怎么办呢?可以使用alter语句,语法形式如下所示: SQL alter trigger trigger_name disable;,2020年8月10日,第18页,15.8 查看触发器信息,Oracle系统在其数据字典中存储了触发器的所有信息。因此,可以通过数据字典得到有关触发器的信息。当前用户使用的数据字典视图是user_triggers,该数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险服务采购合同终止及保险责任协议
- 城市地下停车场租赁及改造合作协议
- 纸质规划方案文案
- 养生馆升级装修方案
- 煤矿修旧利废实施方案
- 管道鉴定方案
- 企业商标管理实务课件
- 智能电规划升级方案
- 舆论回应面试题及答案
- 餐饮业食品安全风险评估与防控合同范本
- 广东省湛江市2023-2024学年高二下学期7月期末考试化学试题
- 江苏省盐城市2023-2024学年高一下学期6月期末 数学试题【含答案】
- 黑龙江省哈尔滨市2024年七年级下学期生物期末试卷附答案
- DZ∕T 0376-2021 智能矿山建设规范
- 小学教师绩效考核及绩效工资发放实施办法
- 山东省邹城市一中2024年高一数学第二学期期末检测试题含解析
- 供应商审核自查表+自评回复模版BYD
- 脑外伤后综合征个案护理
- 北师大版数学四年级下册简易方程练习300题及答案
- 建设工程施工阶段安全监理
- 医院项目监理节能评估报告
评论
0/150
提交评论