在exam数据库中应用触发器_第1页
在exam数据库中应用触发器_第2页
在exam数据库中应用触发器_第3页
在exam数据库中应用触发器_第4页
在exam数据库中应用触发器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、15.2 应用触发器应用触发器教学任务:教学任务:在在Exam数据库中创建以下触发器数据库中创建以下触发器1. 创建update后触发器ExamDatabaseTri,提醒Exam数据库中题库表中被修改的记录条数;2. 定义一个delete后触发器TestUserTri,实现当删除某个学生信息后,就级联删除该学生相关的成绩记录;(deleted表应用)15.2 应用触发器应用触发器教学任务:教学任务:在在exam数据库中创建以下触发器数据库中创建以下触发器3. 定义一个Insert后触发器SubjectTri,实现当向ExamSubject表中添加记录时,把新的课程考试安排信息同时插入到考试设

2、置表ExamTest中,以便及时安排课程考试信息;(inserted表应用)4. 定义一个替代触发器AdminTri,不允许对管理员表Admin表的UserName列进行任何修改操作。(update()函数应用)15.2 应用触发器应用触发器知识点:知识点:创建触发器可以使用Create Trigger语句来完成对触发器的创建操作,创建DML触发器的基本语法如下:Create Trigger trigger_name On table | view With Encryption For | After | Instead Of Insert , Update , Delete With Ap

3、pend Not For Replication AsSql语句系列15.2 应用触发器应用触发器知识点:知识点:创建触发器需要注意的是:1) Create Trigger语句必须是一个批处理的第一条语句。2) 创建DML触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。3) 一个触发器只能创建在一个表上;一个表可以有一个替代触发器和多个后触发器。4) 虽然DML触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建DML触发器。15.2 应用触发器应用触发器知识点:知识点:创建触发器需要注意的是:5) 触发器的定义语句中不能有任何用Create创建、用Alter修改数据库或

4、各种对象的语句,不允许使用任何的Drop语句。6) Truncate Table虽然在功能上与Delete类似,但是由于Truncate删除记录时不被记入事务日志,所以该语句不能激活delete删除操作的触发器。7) Writetext命令不会触发Insert或者Update触发器运行。触发器作为一种数据库对象,在syscomments系统表中存储其完整的定义信息,在sysobjects系统表中有该对象的记录。sysobjects表中name列对应对象名,type或xtype列对象对象类型,触发器用“TR”表示。15.2 应用触发器应用触发器配套任务:配套任务:在在Library数据库中创建以

5、下触发器数据库中创建以下触发器1.创建一个update后触发的触发器BookTri,显示书籍Book信息表中被修改记录的条数。2.定义一个Delete触发器UserTri,实现当删除某个读者信息后,就删除该读者的借阅记录。(级联删除操作)15.2 应用触发器应用触发器配套任务:配套任务:在在library数据库中创建以下触发器数据库中创建以下触发器3.定义一个Insert触发器BookCateTri,实现当向Book表中添加记录时,把新的图书类别插入到图书类别表BookCategory中。4.定义一个Update触发器UserCateTri,更新读者类别表UserCate中读者类别名称Cate

6、Name时,把读者表UserTb中相应的读者类别也进行修改。15.2 应用触发器应用触发器配套任务:配套任务:在在Library数据库中创建以下触发器数据库中创建以下触发器5.定义一个insert触发器LendUserTbTri,当发生读者借阅书籍的情况,除了在Lending表中记录此借阅信息,同时读者表UserTb中借书数量UserBkNum也进行修改。6. 定义一个替代触发器AdminTri,不允许对“AdminTb”表进行修改、删除。拓展训练拓展训练1.因为在“Library”数据库中无法通过约束来实现Lending/Book/UserTb三个表之间的借书业务规则,请设计一个插入型触发器

7、,要求是:当有一个读者借阅一本书籍的时候,系统自动侦测被借书籍是否在库,若不在则提示“该书已不在库,不能借出!”;若该书在库,则允许读者借出,且同时修改Book表中该书的状态及UserTb表中用户借书总数,以达到数据的一致性。2. 进一步修改以上触发器功能,增加对用户借书总数的判断,因为每位读者都有相应的可借书数量的最高限度。约束与触发器约束与触发器对比约束与触发器,二者应该各尽所能:约束和DML触发器在特殊情况下各有优点。DML触发器的主要优点在于它们可以包含使用Transact-SQL代码的复杂处理逻辑。因此,DML触发器可以支持约束的所有功能;但DML触发器对于给定的功能并不总是最好的方

8、法。当约束支持的功能无法满足应用程序的功能要求时,DML触发器非常有用。约束与触发器约束与触发器对比约束与触发器,二者应该各尽所能,二者的区别主要是:1)除非References子句定义了级联引用操作,否则Foreign Key约束只能用与另一列中的值完全匹配的值来验证列值。2) 约束只能通过标准化的系统错误来传递错误信息。如果应用程序需要(或能受益于)使用自定义消息和较为复杂的错误处理,则必须用触发器。约束与触发器约束与触发器3) DML触发器可以将更改通过级联方式传播给数据库中的相关表;不过,通过级联引用完整性约束可以更有效地执行这些更改。4) DML触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与其主键不匹配时,这样的触发器将生效。但是, Foreign Key约束通常用于此目的。5) 如果触发器表上存在约束,则在Instead Of触发器执行后但在After触发器执行前检查这些约束。如果违反了约束,则回滚Instead Of触发器操作并且不执行After触发器。小小 结结1.触发器是一种特殊的存储过程,它与表相连,当用户修改表中的

温馨提示

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

评论

0/150

提交评论