第12章 序列和触发器.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章 序列和触发器

目标 序列概述 序列(SEQUENCE)是序列号生成器,可以自动产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的唯一主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。 在Oracle中使用CREATE SEQUENCE创建序列。其语法结构如下: 使用序列 创建序列:下述代码创建一个由1000开始,最大值为9999999,间隔为1的序列。 使用序列:如果已经创建了序列,可以使用伪列CURRVAL和NEXTVAL来引用序列的值。NEXTVAL用于生成序列的下一个序列号,调用时要指出序列名,调用方式如下: 维护序列 维护序列的方式有如下几种: 修改序列:可以使用ALTER SEQUENCE来修改序列定义,但是序列的初始值不能修改。 删除序列:在Oracle中使用DROP SEQUENCE来删除序列对象。 查看序列:通过数据字典USER_OBJECTS可以查看用户拥有的序列,通过数据字典USER_SEQUENCES可以查看序列的设置。 触发器 触发器(trigger)定义与数据库有关的某个事件发生时数据库将要执行的操作。 触发器存放在数据库内,触发器内的代码,称为触发体(trigger body),由PL/SQL块构成。 当触发器所依赖的特定事件产生时,将自动调用该触发器并执行触发体,其执行过程是隐式的、对用户透明的。 在Oracle中,使用触发器的优势在于: 强制实施复杂的业务规则,允许/限制对表的修改 自动生成派生列,比如自增字段 可用来补充声明的参照完整性,强制数据一致性 提供审计和日志记录 防止无效的事务处理 启用复杂的业务逻辑 触发器的分类 在Oracle中,触发器分为以下几类: 语句触发器:在执行DML(INSERT、DELETE、UPDATE)操作时,将激活该类触发器。 行触发器:在执行DML操作时,每作用一行被触发一次。 INSTEAD OF触发器:该触发器是仅基于在视图上进行DML操作所创建的触发器。 事件触发器:该类触发器基于ORACLE系统事件或客户事件建立并触发,如:执行DDL命令、数据库的启动与关闭等。 创建触发器的一般语法格式如下: 语句触发器 语句触发器是指基于DML操作所建立的触发器。在建立了DML触发器之后,如果执行了相关DML语句,那么Oracle会隐含地执行触发器代码。语句触发器是语句级别的,触发体内不能展示数据的变化。 BEFORE触发器示例如下: ORACLE提供三个条件谓词: INSERTING:如果触发语句是INSERT语句,则为TRUE,否则为FALSE。 UPDATING:如果触发语句是UPDATE语句,则为TRUE,否则为FALSE。 DELETING:如果触发语句是DELETE语句,则为TRUE,否则为FALSE。 行级触发器 行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操作影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器; 而语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器。 当省略FOR EACH ROW选项时,BEFORE和AFTER触发器为语句触发器。 行触发器是基于行级别的,触发体内可以记录列数据的变化。当触发器被触发时,要使用被插入、更新或删除的记录中的列值,缺省情况下,可以使用伪记录:NEW引用访问操作完成后列的值(新值),通过:OLD引用访问操作完成前列的值(旧值)。 BEFORE行触发器 BEFORE行触发器会在对每行数据操作前被触发。示例代码如下: AFTER行触发器 基于Oracle的数据库审计只能监视用户的操作,不能记录数据变化。为了记录数据变化,可以使用AFTER行触发器。示例代码如下: UPDATE OF限制 对于UPDATE操作的触发器,可以使用OF子句限制触发条件,即只有属于OF指定的列列表的数据列发生数据修改时,才会激活触发器。 WHEN限制 当使用行触发器时,默认情况下会在每个被作用行上执行一次触发器代码。可以使用WHEN子句对触发条件加以限制,只有满足condition指定的条件的行才会被触发。 示例如下: 维护触发器 维护触发器的方式有如下几种: 触发器的使能 ENABLE:当满足触发条件时,处于ENABLE状态的触发器TRIGGER将被触发。 DISABLE:即使满足触发条件时,处于DISABLE状态的触发器也不会被触发。 重新编译触发器 删除触发器 显示触发器信息 触发器使用限制 小结 第十二章 序列和触发器 掌握序列的创建、使用和删除 掌握语句触发器的使用 掌握BEFORE语句和ALTER语句触发器的使用 掌握行触发器的使用 掌握对触发器的维护 CREATE SEQUEN

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档