1 / 19
文档名称:

7实验七 触发器.doc

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

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

分享

预览

7实验七 触发器.doc

上传人:cxmckate6 2021/12/15 文件大小:2.06 MB

下载得到文件列表

7实验七 触发器.doc

文档介绍

文档介绍:word
word
1 / 19
word
实验七 触发器
一、实验目的
〔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,=)
print'插入信息的课程号不在课程表中!'
rollback
end
else
begin
ifnotexists(select*fromcourse,=)
begin
print'插入信息的课程号不在课程表中!'
rollback
end
end
word
word
2 / 19
word
执行:
①、insertintoSC
values('20110112','001','78')
删除外键约束:
altertableSC
dropconstraintFK__SC__Sno__182C9B23
word
word
3 / 19
word
②、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
=)
begin
deletefromsc
(selectofromdeleted)
word
word
5 / 19
word
end
deletefromCourse
whereo='003'
select*fromSC
(3〕在Course表中添加一个平均成绩avg_Grade字段〔记录每门课程的平均成绩〕,创建一个触发器
word
word
5 / 19
word
Grade_modify,当SC表中的某学生的成绩发生变化时,如此Course表中的平均成绩也能与时相应的发生改变。
altertableCourse
addavg_Gradesmallint
updateCourse
setavg_Grade=(selectAVG(Grade)fromSC
=)
select*fromCourse
createtriggerGrade_modify
onsc
afterupdate
as
ifupdate(grade)
word
word
6 / 19
word
begin
updatecourse
setavg_grade=(selectavg(grade)
=
groupbyo)
end
updateSC
setGrade='90'
whereSno='20050001'ando='001'
word
word
7 / 19
word
〔4〕测试上述三个触发器。
测试过程在〔1〕、〔2〕、〔3〕中均给出
of 触发器
(1〕创建一视图Student_view,包含学号、某某、课程号、课程名、成绩等属性,在Student_view上创建一个触发器Grade_moidfy,当对Stu