- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle对象之索引,触发器解读
第7章Oracle对象之索引,触发器本章目标学会使用索引学会使用触发器索引索引的定义索引是与表相关的一种数据库逻辑存储结构,也可以被视为是数据库中用于存放表中每一条记录位置的一种对象。索引的作用索引加快数据的读取速度和完整性检查,类似于图书目录和图书馆图书索引卡。索引的原理在关系数据库中,每一行都由一个行唯一标识RowID。RowID包括该行所在的文件、在文件中的块数和块中的行号。索引中包含一个索引条目,每一个索引条目都有一个键值和一个RowID,其中键值可以是一列或者多列的组合。索引的分类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 REBUILDSTORAGE(INITIAL1M NEXT512k);unique,可选Rebuild是根据原来的索引结构,重新建立索引,通过重建索引,可以减少硬盘碎片和提高应用系统的性能删除索引dropindex 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触发器还有一些具体的问题,说明如下:* 如果有多个触发器被定义成为相同时间、相同事件触发,且最后定义的触发器是有效的,则最后定义的触发器被触发,其他触发器不执行。* 一个触发器可由多个不同的DML操作触发。在触发器中,可用INSERTING、DELETING、UPDATING谓词来区别不同的DML操作。这些谓词可以在IF分支条件语句中作为判断条件来使用。* 在行级触发器中,用:new 和:old(称为伪记录)来访问数据变更前后的值。但要注意,INSERT语句插入一条新记录,所以没有:old记录,而DELETE语句删除掉
您可能关注的文档
最近下载
- TBIE 004—2023通孔回流焊接技术规范团标.pdf
- 国开《MySQL数据库应用》形考1-4(试题及答案).pdf VIP
- 煤矿安全生产作业规程操作规程安全技术措施编制审批贯彻及执行管理制度.doc
- 2020年光学膜行业研究报告.pdf
- 采血管种类和应用ppt课件.pptx VIP
- 职业生涯报告六篇.pdf VIP
- Unit 4 Plants arounds us PartA Let's talk(课件)人教PEP版(2024)英语三年级上册.pptx
- 七年级上册生物:必考问答式知识点汇总(背诵+默写).docx
- 《青纱帐——甘蔗林》课件【中职专用】高教版 基础模块下册.pptx
- 国家开放大学学位英语历年真题试卷号1909.docx
文档评论(0)