收藏 分享(赏)

实验八 触发器.doc

上传人:HR专家 文档编号:5187302 上传时间:2019-02-12 格式:DOC 页数:13 大小:1.15MB
下载 相关 举报
实验八 触发器.doc_第1页
第1页 / 共13页
实验八 触发器.doc_第2页
第2页 / 共13页
实验八 触发器.doc_第3页
第3页 / 共13页
实验八 触发器.doc_第4页
第4页 / 共13页
实验八 触发器.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、数据库系统原理实验报告八题目:实验八 触发器学号:xxxxxxxxxxx 姓名:lrm_1036 日期:2010-12-30一、实验环境:SQL server 2005二、实验目的:1. 掌握创建、修改、删除和执行触发器的方法; 2. 完成上机练习。三、实验内容与完成情况:(要求:提交源程序并标识必要的注释。保证程序能正确编译和运行,认真填写实验报告。)1.创建和执行触发器 (1) 交互式为数据库表 Student 创建一级联更新触发器 TRIGGER_S(要求:若修改Student 表中一学生的学号,则 SC 表中与该学生相关的学号自动修改) 启动 SSMS,在“对象资源管理器”中,展开“数

2、据库”“实验”“表” “dbo.Student 对象” 。右击“触发器” ,在打开的快捷菜单中,选择“新建触发器” ,打开触发器编辑窗口,如图 1.1 所示.图 1.1将窗口内模板语句修改为下列 SQL 语句: CREATE TRIGGER TRIGGER_S ON Student FOR UPDATE AS IF UPDATE(SNO) BEGIN DECLARE SNO_NEW INT, SNO_OLD INT -声明SELECT SNO_NEW=SNO FROM INSERTED -查找新数据和SELECT SNO_OLD=SNO FROM DELETED -查找旧数据UPDATE SC

3、 SET SNO=SNO_NEW WHERE SNO=SNO_OLD -把新数据更新到SC表中END 单击工具栏中的分析按钮,检查语法是否正确。 单击执行按钮,保存创建的触发器,如图 1.2 所示。 图 1.2验证触发器的作用:a.在 SSMS 中,打开数据库表 Student 和 SC 的数据表,可以看到,在 Student 中学号为 1001 的学生在 SC 表中有 3 条记录。 b.查看数据库表 Student 和 SC 之间是否已创建外键参照关系,若已创建,则删除。使此功能用刚创建的触发器 TRIGGER_S 来代替。 c.把表 Student 中的学号为 1001 改为 1010,单

4、击“执行”按钮,执行该操作,如图 1.3 所示。use 实验update Studentset Sno = 1010where Sno = 1001图 1.3d.单击表 SC,使其成为当前表,单击工具栏中的“执行”按钮,更新数据库表 SC中的数据,可以看到表 SC 中的三个 1001 学号同时自动变成了 1010,如图 1.4所示。图 1.4(2) 用 SQL 为数据库表 SC 创建一触发器 Score_SC_TRI(要求:当插入一个记录或修改成绩时,确保此记录的成绩在 0100 分之间) 打开查询编辑器窗口,在窗口中输入如下 SQL 语句: USE 实验GO CREATE trigger S

5、core_SC_TRI ON SC FOR Insert, update As declare score_read int Select score_read=grade from inserted -查找新数据(成绩)If score_read=0 and score_read=100 -判断新数据是否在-100之间Begin Print 操作完成! -是,输出Return EndPrint 成绩超出100之间!请重新输入。 -否,输出Rollback Transaction -返回GO 单击工具栏中的“执行”按钮,执行 SQL 语句。 在“对象资源管理器”中,展开“数据库”“实验”“表”

6、“dbo.SC”“触发器” ,可以看到 Score_SC_TRI 已经存在,如图 1.5 所示。图 1.5验证触发器的作用: a.在“对象资源管理器”中,打开表 SC; b.在查询编辑器窗口中输入如下 SQL 语句: USE 实验INSERT INTO SC VALUES(1001,4,190) -成绩为超出范围,而要求重新输入GO INSERT INTO SC VALUES(1001,4,100) -绩为在正常范围内,而插入表中GO UPDATE SC SET grade=130 WHERE SNO=1002 AND CNO=1 -成绩为超出范围,而要求重新输入GO UPDATE SC SE

7、T grade=60 WHERE SNO=1002 AND CNO=1 -成绩为在正常范围内,而修改成功GO c.单击工具栏中的“执行”按钮,执行 SQL 语句。可以看到 4 调系统信息,表示:第一条 INSERT 语句因成绩为 190 超出范围,而要求重新输入;第二条 INSERT语句因成绩为 100 在正常范围内,而插入表中;第三条 UPDATE 语句因成绩为130 超出范围,而要求重新输入;第四条 UPDATE 语句因成绩为 60 在正常范围内,而修改成功,如图 1.6 所示。图 1.6d.再次查看 SC 表中的数据,可以看到增加了一个记录,修改了一个记录,如图 1.7所示。图 1.7(

8、3) 请自行完成:用SQL为数据库表Course创建一个级联删除触发器TRIGGER_DC(要求:通过课程名从 Course表中删除某课程信息,同时删除 SC表中与此课程相关的选课记录) 打开查询编辑器窗口,在窗口中输入如下 SQL 语句: CREATE TRIGGER TRIGGER_DCON Course FOR DELETE ASBEGIN DECLARE CNO_OLD INT -声明SELECT CNO_OLD=CNO FROM DELETED -查找要删除的数据DELETE FROM SC WHERE CNO=CNO_OLD -把新数据更新到SC 表中END 单击工具栏中的“执行”

9、按钮,执行 SQL 语句。 在“对象资源管理器”中,展开“数据库”“实验”“表”“dbo.SC”“触发器” ,可以看到 Score_SC_TRI 已经存在,如图 1.8 所示。图 1.8验证触发器的作用: a.在“对象资源管理器”中,打开表 SC; b.在查询编辑器窗口中输入如下 SQL 语句: use 实验deletefrom Coursewhere Cname = C 语言程序设计 -相当于 Cno=4c.单击工具栏中的“执行”按钮,执行 SQL 语句。可以看到 2 调系统信息,表示:SC 表有两行信息删除成功,Course 表有一行信息删除成功,如图 1.9 所示。图 1.9d.再次查看

10、 SC 表中的数据,可以看到删除的两行记录,删除前表 SC 如图 1.7 所示,删除后表 SC 如图 1.10 所示。图 1.102.修改触发器 (1) 交互式修改数据库表 Student 的触发器 TRIGGER_S(要求:若删除数据库表Student 中某一个学生的记录信息,则自动删除数据库表 SC 中与该学生相关的记录信息) 在“对象资源管理器”中,展开“数据库”“实验” “表” “dbo.Student” “触发器” ,右击“TRIGGER_S” ,在打开的快捷菜单中,选择“修改”选项,如图 2.1 所示,打开触发器修改窗口,该窗口中显示了此触发器的定义,如图 2.2 所示。 图 2.

11、1图 2.2把窗口中的 SQL 语句修改成下面内容,以实现题目要求: ALTER TRIGGER TRIGGER_SON Student FOR DELETEAS DECLARE SNO_DEL intSELECT SNO_DEL=SNO FROM DELETEDDELETE FROM SC WHERE SNO=SNO_DEL -删除表 SC 中相关信息 单击工具栏中的“分析”按钮,检查语法是否正确。 单击“执行”按钮,保存创建的触发器。 展开“数据库”“实验”“表”“dbo.Student”“触发器” ,双击TRIGGER_S,打开触发器修改窗口,可以看到 TRIGGER_S 已经修改,如图

12、 2.3 所示。图 2.3 验证触发器 TRIGGER_S 的功能:在数据库表 Student 中选择任意一个学生记录,将其删除,查看数据库表 SC 中与其对应的选课记录的变化。a.在“对象资源管理器”中,打开表 SC; b.在查询编辑器窗口中输入如下 SQL 语句: use 实验deletefrom Studentwhere Sno = 1002 c.单击工具栏中的“执行”按钮,执行 SQL 语句。可以看到 2 调系统信息,表示:SC 表有三行信息删除成功,Student 表有一行信息删除成功,如图 2.4 所示。图 2.4d.再次查看 SC 表中的数据,可以看到删除的两行记录,删除前表 S

13、C 如图 1.10 所示,删除后表 SC 如图 2.5 所示。图 2.5(2) 请自行完成:用SQL修改数据库表Course的触发器TRIGGER_DC (要求:通过课程号从数据库表Course中删除某课程信息,同时删除数据库表SC中与此课程相关的记录)打开触发器修改窗口,把窗口中的 SQL 语句修改成下面内容,以实现题目要求: ALTER TRIGGER TRIGGER_DCON Course FOR DELETEAS DECLARE CNO_OLD INT -声明SELECT CNO_OLD=CNO FROM DELETED -查找要删除的数据DELETE FROM SC WHERE CN

14、O=CNO_OLD -把新数据更新到 SC 表中 单击工具栏中的“分析”按钮,检查语法是否正确。 单击“执行”按钮,保存创建的触发器。 展开“数据库”“实验”“表”“dbo.Course”“触发器” ,双击TRIGGER_S,打开触发器修改窗口,可以看到 TRIGGER_S 已经修改,如图 2.6 所示。图 2.6 验证触发器 TRIGGER_S 的功能:在数据库表 Course 中选择任意一个学生记录,将其删除,查看数据库表 SC 中与其对应的选课记录的变化。a.在“对象资源管理器”中,打开表 SC; b.在查询编辑器窗口中输入如下 SQL 语句: use 实验deletefrom Cour

15、sewhere Cno = 2c.单击工具栏中的“执行”按钮,执行 SQL 语句。可以看到 2 调系统信息,表示:SC 表有一行信息删除成功,Course 表有一行信息删除成功,如图 2.7 所示。图 2.7d.再次查看 SC 表中的数据,可以看到删除的两行记录,删除前表 SC 如图 2.5 所示,删除后表 SC 如图 2.8 所示。图2.83.删除触发器 (1) 交互式删除数据库表 Student 的触发器 TRIGGER-S: 在“对象资源管理器”中,展开“数据库”“实验”“表”“dbo.Student”“触发器” ,右击“TRIGGER_S” ,在打开的快捷菜单中选择“删除”选项,如图 3.1所示,弹出“删除对象”对话框,如图 3.2 所示。 图 3.1图 3.2 单击“确定”按钮,触发器 TRIGGER_S 即被删除。 (2) 用 SQL 删除数据库表 Course 的触发器 TRIGGER_DC 在查询编辑器窗口中输入下列 SQL 语句 USE 实验GO DROP TRIGGER TRIGGER_DC GO 单击工具栏中的“执行”按钮,执行 SQL 语句 查看数据库“实验”中触发器对象的变化,如图 3.3 所示。 图 3.3

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报