数据库原理实验5触发器_第1页
数据库原理实验5触发器_第2页
数据库原理实验5触发器_第3页
数据库原理实验5触发器_第4页
数据库原理实验5触发器_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

孚验报0课程名称 数据库原理 实验序号 5 实验项目 触发器 实验地点 实验学时 实验类型验证性指导教师 实验员 专业—班级 学号—姓名 年月日成绩:A教师该学生在实验中能发现问题,在教师的启发下能解决问题。实验步骤和目标明确,实验内容丰富,实验结论有较好的见解和体会,把所学知识在实验中进行了检验。评语一、实验目的及要求1、 掌握触发器的基本理论知识;2、 初步掌握触发器的使用,包括创建、修改、删除触发器。二、实验原理与内容1、 触发器的概念触发器是一种在使用UPDATE、INSERT或DELETE命令对指定表中的数据进行修改时,由数据库管理系统自动执行的内嵌程序,用来保证数据的一致性和完整性。触发器与表紧密相连,可以看作是表定义的一部分。触发器可以建立在一个用户定义的表或视图上,但不能建立在临时表或系统表上。触发器基于一个表创建,但可以操作多个表。触发器作为一个独立的单元被执行,被看作一个事务。如果在执行触发器的过程中发生了错误,则整个事务将会自动回滚。触发器是一种特殊的存储过程,但它与存储过程不同,存储过程的存在独立于表,而触发器和表紧密结合;存储过程可以通过存储过程名称而被直接调用,触发器则是通过事件进行触发而自动被执行的。2、 触发器的优点触发器是自动执行的。触发器可以通过数据库中的相关表进行层叠更改,实现多个表之间数据的一致性和完整性。触发器可以强制比用check约束定义的约束更为复杂的约束。触发器可以引用其他表中的列。⑷一个表中的多个同类触发器(INSERT、UPDATE、DELETE)运行采取多个不同的对策,以相应同一个修改语句。(5)触发器可以评估数据修改前后的表状态,并根据其差异采取对策3、 触发器的分类AFTER触发器:又称后触发器。这种触发器在数据变动完成后才被触发。可以对变动的数据进行检查,如果发现错误,将拒绝接受或回滚变动的数据。只能在表上定义。在同一个数据表中可以创建多个after触发器。默认为after触发器。for同after。INSTEADOF触发器:前触发器。其在数据变动前被触发,并取代变动数据的操作(update、insert、delete),而去执行触发器定义的操作。可在表或视图上定义,每个update、insert、delete语句最多可定义一个insteadof触发器。4、 触发器的组成事件:事件是指对数据库的插入、删除、修改等操作。触发器在这些事件发生时将开始工作。条件:触发器将测试条件是否成立。如果条件成立,就执行相应的动作;否则什么也不做。动作:如果条件满足,则执行这些动作。5、 Inserted表和deleted表Deleted表用于存储delete和update语句所影响的行的备份。在执行delete或update语句时,行从表中删除,并转移到deleted表中。Deleted表和基表通常没有相同的行。Inserted表用于存储insert和update语句所影响的行的备份。在一个插入或更新事务处理中,新建行被同时添加到inserted表和基表中。Inserted表中的行是基表中新行的备份。6、 在对具有触发器的表(触发器表)进行操作时,其操作过程如下:⑴执行insert操作:插入到触发器表中的新行被插入到inserted表中。⑵执行delete操作:从触发器表中删除的行被插入到deleted表中。执行update操作:先从触发器表中删除旧行,然后再插入新行。其中被删除的旧行被插入到deleted表中,插入的新行被插入到inserted表中。7、 创建触发器CREATETRIGGER<trigger_name>ON<table|view>[WITHENCRYPTION]{{{FOR|AFTER|INSTEADOF}{[DELETE][,][INSERT][,][UPDATE]}ASsql_statement[...n]}}Trigger_name:触发器的名称。Table|view:是在其上执行触发器的表或视图。Withencryption:加密syscomments表中包含createtrigger语句文本的条目。After:指定触发器只有在触发sql语句中指定的所有操作都已成功执行后才激发。如果仅指定for,贝U是默认设置。不能在视图上定义after触发器。Insteadof:指定执行触发器而不是执行触发sql语句,从而替代触发语句的操作。在表或视图上,每个insert、update、delete语句最多可以定义一个insteadof触发器。Delete、update、insert:是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。As:是触发器要执行的操作。Sql_statement:是触发器的条件和操作。8、 修改触发器alterTRIGGER<trigger_name>ON<table|view>[WITHENCRYPTION]{{{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}ASsqljstatement[・.・n]

}}9、 删除触发器Droptriggertrigger_name[, ]10、 嵌套触发器■如果一个触发器在执行操作时引发了另一个触发器,而这个触发器又接着引发下一个触发器时,这些触发器就是嵌套触发器。■触发器可嵌套至32层。三、实验软硬件环境装有MicrosoftSQLServer2008ManagementStudio的电脑□ feqiei-vhtreSr.air.e="李阴*运行结果如右图,我们可以看到,删除student□ feqiei-vhtreSr.air.e="李阴*2、 修改触发器createtriggert1onstudentInsteadofdeleteasdeletefromreportswheresno=(selectsnofromdeleted)3、 当在student表中插入一个学生信息时,假定该同学会选修所有课程,同时在reports表中插入该

同学的选修信息。其命令为CREATETRIGGERT2ONstudentAFTERINSERTASBEGINdeclare@xhvarchar(10)select@xh=snofrominserted--读取插入学生的学号insertintoreports(sno,cno) --插入选课信息select@xh,cnofromcourseEND执行上述命令后,执行插入命令bno1Fsoi]bno1Fsoi]王建郢舅21□QI2"s'S"李明立IS□013£09女他DB24SD422DOS5S05IE003GSOG2CDQ37SG9d遛Z2002执行select*fromstudent,运行结果如下:如Cm5CW7516503C&lNULL75D9CMNULL8SOSCB3NULL9SMGWNULL10309CDS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论