- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle对象之索引,触发器教程
第7章 Oracle对象之索引,触发器
本章目标
学会使用索引
学会使用触发器
索引
索引的定义
索引是与表相关的一种数据库逻辑存储结构,也可以被视为是数据库中用于存放表中每一条记录位置的一种对象。
索引的作用
索引加快数据的读取速度和完整性检查,类似于图书目录和图书馆图书索引卡。
索引的原理
在关系数据库中,每一行都由一个行唯一标识RowID。RowID包括该行所在的文件、在文件中的块数和块中的行号。
索引中包含一个索引条目,每一个索引条目都有一个键值和一个RowID,其中键值可以是一列或者多列的组合。
在索引中查找姓名为Candy的人
然后根据Candy对应的记录地址,定位到数据表的记录
索引的分类
B-Tree索引
树形结构的索引
位图索引
针对只有有限值的列的索引
函数索引
定义在函数结果上,此函数对字段进行操作
普通索引:create [unique] index i_sex on student(studentname);
函数索引:create [unique] index i_sex on student(substr(studentname, 1, 1));
建立索引
create [unique] index i_sex on student(studentname);
unique,可选,表明该索引中,不能有重复值,如果有重复值,索引建立时会报错
索引可以建立在单个列上,也可以建立在多个列上
修改索引
ALTER [unique] INDEX i_sex REBUILD STORAGE ( INITIAL 1M NEXT 512k);
unique,可选
Rebuild是根据原来的索引结构,重新建立索引,通过重建索引,可以减少硬盘碎片和提高应用系统的性能
删除索引
drop index i_sex;
当不需要时,可以通过删除索引,可以释放出硬盘空间
触发器
什么是触发器
触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接收参数,不能被调用。
触发器必须由事件才能触发。触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。
事件类型事件描述DML事件INSERT在表或视图中插入数据时触发UPDATE修改表或视图中的数据时触发DELETE在删除表或视图中的数据时触发DDL事件CREATE在创建新对象时触发ALTER修改数据库或数据库对象时触发DROP删除对象时触发数据库事件STARTUP数据打开时触发SHUTDOWN在使用NORMAL或IMMEDIATE选项关闭数据库时触发LOGON当用户连接到数据库并建立会话时触发LOGOFF当一个会话从数据库中断开时触发SERVERERROR发生服务器错误时触发
触发器的分类
种 类简 称作 用 数据操纵语言触发器DML触发器创建在表上,由DML事件引发的触发器 替代触发器INSTEAD OF触发器创建在视图上,用来替换对视图进行的插入、删除和修改操作 数据定义语言触发器DDL触发器定义在模式上,触发事件是数据库对象的创建和修改系统事件触发器—定义在整个数据库或模式上,触发事件是数据库事件
DML触发器
DML触发器是定义在表上的触发器,由DML事件引发。
编写DML触发器的要素是:
确定触发的表,即在其上定义触发器的表。
确定触发的事件,DML触发器的触发事件有INSERT、UPDATE和DELETE三种。
确定触发时间。触发的时间有BEFORE和AFTER两种,分别表示触发动作发生在DML语句执行之前和语句执行之后。
确定触发级别,有语句级触发器和行级触发器两种。语句级触发器表示SQL语句只触发一次触发器,行级触发器表示SQL语句影响的每一行都要触发一次。
DML触发器的执行顺序:
由于在同一个表上可以定义多个DML触发器,因此触发器本身和引发触发器的SQL语句在执行的顺序上有先后的关系。它们的顺序是:
* 如果存在语句级BEFORE触发器,则先执行一次语句级BEFORE触发器。
* 在SQL语句的执行过程中,如果存在行级BEFORE触发器,则SQL语句在对每一行操作之前,都要先执行一次行级BEFORE触发器,然后才对行进行操作。如果存在行级AFTER触发器,则SQL语句在对每一行操作之后,都要再执行一次行级AFTER触发器。
* 如果存在语句级AFTER触发器,则在SQL语句执行完毕后,要最后执行一次语句级AFTER触发器。
DML触发器还有一些具体的问题,说明如下:
* 如果有多个触发器被定义成为相同时间、相同事件触发,且最后定义的触发器是有效的,则最后定义的触发
您可能关注的文档
- ok最好的三下语文8、《路旁的橡树》教程.ppt
- 中华讲师网:TWI-JM与JR.ppt
- 中南大学-java第4次实验报告.doc
- 中华讲师网:现代礼仪.ppt
- 中华讲师网:内审员培训课程.ppt
- 中南大学在线联系生理二.docx
- OncommandUnifiedManager-DFM安装手册教程.docx
- 中华魂-遵纪守法从我做起.pptx
- 中南小学科学教案.doc
- 中后元音音标.ppt
- 难点详解鲁教版(五四制)6年级数学下册期末测试卷带答案详解(考试直接用).docx
- 难点详解鲁教版(五四制)6年级数学下册期末试题【培优】附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题及完整答案详解(全国通用).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(名师系列).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解【全国通用】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(突破训练)附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(能力提升)附答案详解.docx
- 难点详解京改版数学9年级上册期中试卷附参考答案详解【突破训练】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(有一套).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷带答案详解(夺分金卷).docx
文档评论(0)