《实验七--触发器》由会员分享,可在线阅读,更多相关《实验七--触发器(10页珍藏版)》请在金锄头文库上搜索。
1、实验七、触发器实验七、触发器 1、实验目的实验目的(1)理解触发器的用途、类型和工作原理。理解触发器的用途、类型和工作原理。(2)掌握利用掌握利用 T-SQL 语句创建和维护触发器的方法。语句创建和维护触发器的方法。(3)掌握利用掌握利用 SQL Server Management Studio 创建、维创建、维护触发器的方法。护触发器的方法。 2、实验内容、实验内容、1、创建、创建 AFTER 触发器触发器(1)创建一个在插入时触发的触发器)创建一个在插入时触发的触发器 sc_insert,当向,当向 SC 表插入数表插入数据时,须确保插入的学号已在据时,须确保插入的学号已在 Student
2、 表中存在,并且还须确保插表中存在,并且还须确保插入课程号在入课程号在 Course 表中存在;若不存在,则给出相应的提示信息,表中存在;若不存在,则给出相应的提示信息,并取消插入操作,提示信息要求指明插入信息是学号不满足条件还并取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课程号不满足条件。是课程号不满足条件。 (注:(注:Student 表与表与 SC 表的外键约束要先取表的外键约束要先取消。消。 )(2)为为 Course 表创建一个触发器表创建一个触发器 Course_del,当删除了,当删除了 Course表中的一条课程信息时,同时将表表中的一条课程信息时,同时将表 SC
3、 中相应的学生选课记录也删中相应的学生选课记录也删除。除。(3)在在 Course 表中添加一个平均成绩表中添加一个平均成绩 avg_modify,当,当 SC 表中某表中某学生的成绩发生变化时,则学生的成绩发生变化时,则 Course 表中的平均成绩也能及时相应发表中的平均成绩也能及时相应发生改变。生改变。(4)测试上述三个触发器。)测试上述三个触发器。2、创建、创建 INSERTED OF 触发器触发器(1)创建一视图)创建一视图 student_view,包含学号、姓名、课程号、课程名、,包含学号、姓名、课程号、课程名、成绩等属性,在成绩等属性,在 student_view 上创建一个触
4、发器上创建一个触发器 grade_modify,当,当对对 student_view 中的学生的成绩进行修改时,实际修改的是中的学生的成绩进行修改时,实际修改的是 SC 中中的相应记录。的相应记录。(2)在在 Student 表中插入一个表中插入一个 getcredit 字段(记录学生所获学分的字段(记录学生所获学分的情况)情况) ,创建一个触发器,创建一个触发器 ins_credit,当更改(注:含插入时),当更改(注:含插入时)SC 表表中的学生成绩时,如果新成绩大于等于中的学生成绩时,如果新成绩大于等于 60 分,则该生可获得这门课分,则该生可获得这门课的学分,如果新成绩小于的学分,如果
5、新成绩小于 60 分,则该生未能获得这门课的学分。分,则该生未能获得这门课的学分。(3)测试上述两个触发器。)测试上述两个触发器。3、使用、使用 T-SQL 语句管理和维护触发器语句管理和维护触发器(1)用系统存储过程)用系统存储过程 sp_helptrigger 查看触发器查看触发器 grade_modify 的的相关信息。相关信息。(2)使用)使用 sp_helptext 查看触发器查看触发器 grade_modify 中的定义内容。中的定义内容。(3)使用使用 select 语句查看触发器语句查看触发器 grade_modify 的定义内容。的定义内容。(4)用系统存储过程用系统存储过程
6、 sp_depends 查看触发器查看触发器 grade_modify 的相关的相关性(即该触发器涉及哪些基本表)性(即该触发器涉及哪些基本表) 。(5)将将 sc_insert 触发器改为触发器改为 instead of 触发器,实现的功能不变。触发器,实现的功能不变。(6)将触发器将触发器 sc_insert 删除。删除。4、使用、使用SQL Server Management Studio 管理触发器管理触发器(1)在)在 SQL Server Management Studio 中重新创建刚删除的触发中重新创建刚删除的触发器器 sc_insert。(2)查看触发器查看触发器 sc_insert 的内容。的内容。(3)删除触发器删除触发器 sc_insert。