版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验六 触发器学号: 姓名: 专业: 班级:一、实验目的(1)理解触发器的用途、类型和工作原理。(2)掌握利用T-SQL语句创建和维护触发器的方法。(3)掌握利用SQL Server Management Studio创建、维护触发器的方法。二、实验内容1.创建AFTER触发器(1)创建一个在插入时触发的触发器sc_insert:当向sc表插入数据时,须确保插入的学号已在student表中存在,并且还须确保插入的课程号在course表中存在;若不存在,则给出相应的提示信息,并取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课程号不满足条件。(注:student表与sc表的外键约束,c
2、ourse表与sc表的外键约束要先取消)。触发器的创建语句:if exists (select name from sysobjects where name=sc_insert and type=tr)drop trigger sc_insertgocreate trigger sc_insert on sc for insertAs declare sno char(8),cno char(3)Select sno=sno,cno=cno from insertedIf not exists (select * from student where sno=sno)Beginprint n
3、ot exist the studentIf not exists (select * from course where cno=cno)print not exist the courseRollback tranEndelse if not exists (select * from course where cno=cno)beginRollback tranprint not exist the courseendgo触发器的触发执行测试结果:(2)为course表创建一个触发器course_del,当删除了course表中的一条课程信息时,同时将表sc表中相应的学生选课记录也一并删
4、除。触发器的创建语句:create trigger course_del on course for deleteAs declare cno char(3)Select cno=cno from deletedDelete from sc where cno=cno触发器的触发执行测试结果: (3)在course表中添加一个平均成绩avg_grade字段(记录每门课程的平均成绩),创建一个触发器grade_modify,当SC表中的某学生的成绩发生变化时,则course表中的平均成绩也能及时相应发生改变。触发器的创建语句:create trigger grade_modify on sc f
5、or update as if update(grade)beginupdate courseset avg_grade=(select avg(grade) from scwhere o=ogroup by cno)end触发器的触发执行测试结果:2.创建INSTEAD OF触发器(1)创建一视图student_view,包含学号、姓名、课程号、课程名、成绩等属性,在student_view上创建一个触发器grade_moidfy,当对student_view中的学生的成绩进行修改时,实际修改的是sc中的相应记录。触发器的创建语句:create trigger grade_moidfyon
6、student_viewinstead of insertas declare grade tinyint,sno char(8),cno char(3)if update(grade)beginselect grade=grade,sno=sno,cno=cno from insertedupdate sc set grade=gradewhere sno=sno and cno=cnoend触发器的触发执行测试结果:(2)在Student表中插入一个getcredit字段(记录学生所获学分的情况),创建一个触发器ins_credit,当更改(注:含插入时)SC表中的学生成绩时,如果新成绩大
7、于等于60分,则该生可获得这门课的学分,且该学分须与course表中的值一致;如果新成绩小于60分,则该生未能获得学分,修改值为0。触发器的创建语句:create trigger ins_crediton sc for update,insertas declare sno char(8),cno char(3),grade tinyint,credit tinyintif update(grade)beginselect grade=grade,cno=cno,sno=snofrom insertedselect if grade=60beginselect credit=credit fr
8、om course where cno=cnoupdate studentset getcredit=credit where sno=snoendelse update studentset getcredit=credit where sno=snoend触发器的触发执行测试结果:3. 使用T-SQL语句管理和维护(1)用系统存储过程sp_helptrigger查看触发器grade_modify的相关信息。结果:EXECUTE sp_helptrigger grade_modify (2)使用sp_helptext查看触发器grade_modify中的定义内容。结果:EXECUTE sp_
9、helptext grade_modify(3) 使用select语句查看触发器grade_modify的定义内容。(提示:通过查询表sysobjects和表syscomments,触发器的名称保存在表sysobjects的name列,定义脚本保存在表syscomments的text列)(select text from sysobjects, syscomments where name=grade_modify and sysobjects.id=syscomments.id)结果:select text from sysobjects, syscomments where name=gr
10、ade_modify and sysobjects.id=syscomments.id(4)用系统存储过程sp_depends查看触发器grade_modify的相关性(即该触发器涉及到哪些基本表)。(提示:sp_depends grade_modify 查看某个对象被其他调用(或引用)的关系)结果:EXECUTE sp_depends grade_modify(5)将sc_insert触发器改为instead of触发器,实现的功能不变。(提示:使用alter trigger 语句修改)结果:alter trigger sc_insertON SC INSTEAD OF INSERTASde
11、clare Sno char(8),Cno char(3)SELECT Sno=Sno,Cno=CnoFROM INSERTEDIF Sno NOT IN(SELECT Sno FROM student WHERE Sno=Sno) BEGIN ROLLBACK TRAN RAISERROR (Sno is not in student,16,10)ENDIF Cno NOT IN(SELECT Cno FROM Course WHERE Cno=Cno) BEGIN ROLLBACK TRAN RAISERROR (Cno is not in Course,16,10)ENDGO(6)将触发器sc_insert删除。(提示:使用drop trigger 语句删除)结果:drop trigger sc_insert4.使用SQL Server Management Studio管理存储过程(1)在SQL Server Management Studio中重新创建先前删
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中考数学高频考点一轮复习:一元一次方程(含解析)
- 办公楼及厂房转让合同协议书
- 医学影像诊断:技术精准与临床解读的人文平衡
- 咯血应急处置方案
- 公共管理类职业选择
- 护理交接班度3月份专项考核试题(含答案解析)
- 《应用文》-第八章
- 企业安全生产应急救援预案(完整版)
- 《有机化学》-第6章
- 医学影像AI的亚组验证策略
- 2026年基层森林防火知识考试试题及答案
- 四川省成都市武侯区2025-2026学年九年级上学期期末(一诊)考试化学试题(原卷+解析)
- 人教PEP版六年级下册英语Unit 1 How tall are you?单元整体教学设计教案(共6课时)
- 广东省佛山市南海区2025-2026学年上学期期末七年级数学试卷(含答案)
- 2025年金融行业低空经济白皮书-中国工商银行软件开发中心
- 尼康S8100数码相机使用说明书
- 国家基本比例尺地图编绘规范 第4部分 15000 110000地形图编绘规范 征求意见稿
- iFlash3000化学发光免疫分析仪操作程序
- 1.4 化学实验基本操作(练习)【中职专用】(高教版2021通用类)(原卷版)
- 施工现场消防、防火专项施工方案
- 规模化畜禽养殖场零排放建设项目可行性研究报告
评论
0/150
提交评论