版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山西大学计算机与信息技术学院姓名许小珍学号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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年小学实验室实验人员培训合同协议
- 5年(2021-2025)河北高考政治真题分类汇编专题11 世界多极化与经济全球化(原卷版)
- 北师大版高中数学选修1 第1章 2.2 圆的一般方程 同步练习(含答案)
- 2026年山东德州市高三二模高考历史试卷试题(含答案详解)
- 铜川市教师招聘考试题库及答案
- 铁岭市护士招聘考试题库及答案
- 天水市教师招聘考试题库及答案
- 绥化市教师招聘考试题库及答案
- 公务员申论试题及答案
- 家庭法试卷及答案
- 新版电力重大事故隐患判定标准及治理监督管理规定解读
- 2026年北京市门头沟区街道办人员招聘笔试备考试题及答案解析
- 2026年学校防范非法宗教势力渗透工作机制
- 2026年成都市金牛区街道办人员招聘考试参考试题及答案解析
- 2026年四川省成都市网格员招聘笔试模拟试题及答案解析
- 2025年四川农信(农商行)社会招聘试题及答案解析
- 2026年水利水电二级建造师继续教育通关试题库含完整答案详解【夺冠】
- 2026福州首邑产业投资集团有限公司第一次招聘19人笔试参考题库及答案解析
- 2026年校园食品安全培训试题及答案
- 建设项目提级论证方案
- 教科版六年级科学下册期中综合素养测试卷
评论
0/150
提交评论