实验报告5创建和使用触发器_第1页
实验报告5创建和使用触发器_第2页
实验报告5创建和使用触发器_第3页
实验报告5创建和使用触发器_第4页
实验报告5创建和使用触发器_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

山西大学计算机与信息技术学院姓名许小珍学号201024209''专业班级软件一班课程名称数据库实验日期2012.04.24成绩指导教师批改日期实验名称创建和使用触发器一、实验目的:理解触发器的触发过程和类型,掌握创建触发器的方法。二、实验内容:掌握使用对象资源管理器和Transact-SQL语句两种方法创建触发器。三、实验步骤:1)使用SQL语句创建DML触发器。例1.创建一个INSERT触发器,当向“选课表”中添加数据时,如果添加的数据与学生表中的数据不匹配(如没有对应的学号),则将此数据删除。CRONFOEATETRITGGERtrginsstudentSRCINSERASBEGINDECLARE@xhvarchar(12)SELECT@xh=inserted.SnoFROMinsertedIFNOTEXISTS(SELECTSnoFROMStudentWHERESno=@xh)DELETESCWHERESno=@xhENDINSERTINTOSCVALUES('200215123','1',89);JI«=°|=-dbo-scIT表dbo.sc*XP-ZDl1D9191S...QLQueryl.sql*摘蓼enoenograde[llETLlJI192£00215121285200215121300200215122290Z00Z151Z3189米NULL例2.创建一个UPDATE触发器,该触发器防止用户修改“选课表”的成绩。CREATETRIGGERtrgupstudentONSCFORUPDATEASIFUPDATE(Grade)BEGINRAISERROR('不能修改课程分数’,16,10)ROLLBACKTRANSACTION

ENDGO另外一种触发器:CREATETRIGGERtrgupstudent2ONSCINSTEADOFUPDATEASIFUPDATE(Grade)RAISERROR('不能修改课程分数’,16,10)例3:创建一个DELETE触发器。当删除“学生表”中的记录时,自动删除“选课表”中的对应学号的记录。CREATETRIGGERtrgdelstudentONstudentFORDELETEASBEGINDECLARE@xhvarchar(12)SELECT@xh=deleted.SnoFROMdeletedDELETESCWHERESno=@xhENDGO

例四:创建一个触发器,在STUDENT表中插入记录,当插入年龄大于25时,输出年龄应小于25,插入失败。createtriggersageonstudentafterinsertasif(selectsagefrominserted)>25beginprint('年龄应小于25')end当输入InsertintoStudentlvalues(2007241082‘王阳’‘男’36‘计算机’);-[□Ix||尝MicrosoftSQLServerManagemEnt-[□Ix|文件(E)编辑©视图俄查询(Q)项目(2)工具(!)Wn(w)社区©帮助(d)履新建查询她3啧洛墨|臭旧日事唇曹静眇雪目:.费植S-C对象资源管理器•?执行仙/・彩零〔£i柘「喧身I幼画⑥隹刍I璋厚国/表-db。,studentXP-2011091918...QLQuery2.sql*表-dbo.sc摘要曰XP-201109191810(SQLServer9.0.1399-XP-201日o数据库国」系统数据库国o数据库快照日J5-CS履新建查询她3啧洛墨|臭旧日事唇曹静眇雪目:.费植S-C对象资源管理器•?执行仙/・彩零〔£i柘「喧身I幼画⑥隹刍I璋厚国/表-db。,studentXP-2011091918...QLQuery2.sql*表-dbo.sc摘要曰XP-201109191810(SQLServer9.0.1399-XP-201日o数据库国」系统数据库国o数据库快照日J5-CS□数据库关系圈日以养国以系统表国言dbo.course田Eldbo.sc由3dbo.student国以视图田C3同曳词SO可漏程性0□ServiceBroker国存储田□安全性安全性服务器对象复制首理NotificationServices5QLServer代理(已禁用代理:EP)±1就绪(insertintoStudentvalues(】200724182王阳°男°,27,】um|);临消息]年龄应小于2S(1行受影响〉i禅查询…KP-201109191810(9.0RTM)XP-201109191810\AdministratorC53)行2200:00:000行Ch1Ins当执行以下语句时insertintostudentvalues('200515125','zp','男',20,'ma');例六:createtriggerinsert_sonstudentafterinsertasbeginif(selectsagefrominserted)<20updatestudentsetsage=20end;当输入insertintostudentvalues('200215129','张琪','男',18,'ma')四、结果分析:触发器是一种特殊类型的存储过程。一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过当某个事件发生时自动被触发执行的。触发器可以用于SQLServer约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。当创建数据库对象或在数据表中插入记录、修改记录或者删除记录时,SQLServer就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。触发器和引起触发器执行的SQL语句被当作一次事务处理,如果这次事务未获得成功,SQLServer会自动返回该事务执行前的状态。触发器是自动的执行的。触发器可以通过数据库中的相关表进行层叠更改。触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。DDL触发器用于响应各种数据定义语言(DDL)事件。这些事件主要对应于Transact-SQL中的CREATE、ALTER和DROP语句,以及执行类似DDL操作的某些系统存储过程。它们用于执行管理任务,并强制影响数据库的业务规则。DML触发器是在用户使用数据操作语言(DML)事件编辑数据时发生。DML事件是针对表或视图的INSERT、UPDATE或DELETE语句。DML触发器有助于在表或视图中修改数据时强制业务规则,扩展数据完整性。DML触

温馨提示

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

评论

0/150

提交评论