1 / 28
文档名称:

7实验七 触发器.doc

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

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

分享

预览

7实验七 触发器.doc

上传人:坐水行舟 2019/7/7 文件大小:2.09 MB

下载得到文件列表

7实验七 触发器.doc

文档介绍

文档介绍:蒇实验七触发器羃一、实验目的膁(1)理解触发器的用途、类型和工作原理莇(2)掌握利用T-SQL语句创建和维护触发器的方法芆(3)掌握利用企业管理器创建、维护触发器的方法肂二、(1)创建一个在插入时触发的触发器sc_insert,当向sc表插入数据时,须确保插入的学号已在Student表中存在,并且还须确保插入的课程号在Course表中存在;若不存在,则给出相应的提示信息,并取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课程号不满足条件(注:Student表与sc表的外键约束要先取消)。羅createtriggersc_insert肂onsc羃afterinsert蒇as肈ifnotexists(select*fromstudent,inserted膂 =)膀 begin腿 print'插入信息的学号不在学生表中!'螇 ifnotexists(select*fromcourse,o=o)节 print'插入信息的课程号不在课程表中!'薁 rollback羁end薆else莂 begin羂 ifnotexists(select*fromcourse,o=o)莈 begin莄 print'插入信息的课程号不在课程表中!'蒂 rollback莂 end肀 end莇薂葿执行:薈①、insertintoSC膆values('20110112','001','78')蚂袀删除外键约束:芀altertableSC羅dropconstraintFK__SC__Sno__182C9B23羅芁螈羈肅②、insertintoSC蚂values('20110002','001','78')蒀螇膅③、insertintoSC肃values('20110002','006','78')袈蒆芅(2)为Course表创建一个触发器Course_del,当删除了Course表中的一条课程信息时,同时将表sc表中相应的学生选课记录删除掉。膀createtriggercourse_del薀oncourse芅afterdelete芅as蚁ifexists(select*fromsc,deleted肇 o=o)芇begin莅 deletefromsc肁 oin(ofromdeleted)o='003'袅薅蕿select*fromSC罿薄蚄(3)在Course表中添加一个平均成绩avg_Grade字段(记录每门课程的平均成绩),创建一个触发器Grade_modify,当SC表中的某学生的成绩发生变化时,则Course表中的平均成绩也能及时相应的发生改变。羀altertableCourse莇addavg_Gradesmallint蚇螄莁updateCourse腿setavg_Grade=(selectAVG(Grade)o=o)芇芅聿select*fromCourse蚇莇蚅createtriggerGrade_modify螁onsc蚀afterupdate蒇as螂ifupdate(grade)蒃 begin葿 updatecourse薇 setavg_grade=(selectavg(grade)膃 o=o羁 o)膈end 蚆薄蚃updateSC羇setGrade='90'蚆whereSno='20050001'o='001'羅肁羀螆肂(4)测试上述三个触发器。螃测试过程在(1)、(2)、(3)(1)创建一视图Student_view,包含学号、姓名、课程号、课程名、成绩等属性,在Student_view上创建一个触发器Grade_moidfy,当对Student_view中的学生的成绩进行修改时,实际修改的是sc中的相应记录。,Sname,ame,Grade袄fromStudents,Coursec,==o