1 / 19
文档名称:

7实验七 触发器.doc

格式:doc   大小:2,129KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

7实验七 触发器.doc

上传人:xgs758698 2019/5/25 文件大小:2.08 MB

下载得到文件列表

7实验七 触发器.doc

文档介绍

文档介绍:一、实验目的(1)理解触发器的用途、类型和工作原理(2)掌握利用T-SQL语句创建和维护触发器的方法(3)掌握利用企业管理器创建、维护触发器的方法二、(1)创建一个在插入时触发的触发器sc_insert,当向sc表插入数据时,须确保插入的学号已在Student表中存在,并且还须确保插入的课程号在Course表中存在;若不存在,则给出相应的提示信息,并取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课程号不满足条件(注:Student表与sc表的外键约束要先取消)。createtriggersc_insertonscafterinsertasifnotexists(select*fromstudent,inserted =) begin print'插入信息的学号不在学生表中!' ifnotexists(select*fromcourse,o=o) print'插入信息的课程号不在课程表中!' rollbackendelse begin ifnotexists(select*fromcourse,o=o) begin print'插入信息的课程号不在课程表中!' rollback end end执行:①、insertintoSCvalues('20110112','001','78')删除外键约束:altertableSCdropconstraintFK__SC__Sno__182C9B23②、insertintoSCvalues('20110002','001','78')③、insertintoSCvalues('20110002','006','78')(2)为Course表创建一个触发器Course_del,当删除了Course表中的一条课程信息时,同时将表sc表中相应的学生选课记录删除掉。createtriggercourse_deloncourseafterdeleteasifexists(select*fromsc,deleted o=o)begin deletefromsc oin(ofromdeleted)o='003'select*fromSC(3)在Course表中添加一个平均成绩avg_Grade字段(记录每门课程的平均成绩),创建一个触发器Grade_modify,当SC表中的某学生的成绩发生变化时,则Course表中的平均成绩也能及时相应的发生改变。altertableCourseaddavg_GradesmallintupdateCoursesetavg_Grade=(selectAVG(Grade)o=o)select*fromCoursecreatetriggerGrade_modifyonscafterupdateasifupdate(grade) begin updatecourse setavg_grade=(selectavg(grade) o=o o)end updateSCsetGrade='90'whereSno='20050001'o='001'(4)测试上述三个触发器。测试过程在(1)、(2)、(3)(1)创建一视图Student_view,包含学号、姓名、课程号、课程名、成绩等属性,在Student_view上创建一个触发器Grade_moidfy,当对Student_view中的学生的成绩进行修改时,实际修改的是sc中的相应记录。,Sname,ame,GradefromStudents,Coursec,==oselect*fromStudent_viewcreatetriggerGrade_moidfyonStudent_viewinsteadofupdateasifUPDATE(Grade)beginupdateSCsetGrade=(selectGradefrominserted)where Sno=(selectSnofrominserted)o=(ofrominserted)endupdateStudent_viewsetGrade=40whereSno='20110001'o='002'select*fromStudent_viewselect*fromSC(2)在SC表中插入一个getcredit字段(记录某学生,所选课程所获学分的情况),创建一个触发器ins_credit,当更改(注:含插入时)SC表中的学生成绩时,如果新成绩大于等于60分,则该生可获得这门课的学分,且该学分须与Course表中的值一致;如果新成绩小于60分