实验八 触发器Word文档下载推荐.docx

上传人:b****4 文档编号:16407068 上传时间:2022-11-23 格式:DOCX 页数:14 大小:632.11KB
下载 相关 举报
实验八 触发器Word文档下载推荐.docx_第1页
第1页 / 共14页
实验八 触发器Word文档下载推荐.docx_第2页
第2页 / 共14页
实验八 触发器Word文档下载推荐.docx_第3页
第3页 / 共14页
实验八 触发器Word文档下载推荐.docx_第4页
第4页 / 共14页
实验八 触发器Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验八 触发器Word文档下载推荐.docx

《实验八 触发器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验八 触发器Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

实验八 触发器Word文档下载推荐.docx

1.创建和执行触发器

(1)交互式为数据库表Student创建一级联更新触发器TRIGGER_S(要求:

若修改Student表中一学生的学号,则SC表中与该学生相关的学号自动修改)

·

启动SSMS,在“对象资源管理器”中,展开“数据库”→“实验”→“表”→“dbo.Student对象”。

右击“触发器”,在打开的快捷菜单中,选择“新建触发器”,打开触发器编辑窗口,如图1.1所示.

图1.1

将窗口内模板语句修改为下列SQL语句:

CREATETRIGGERTRIGGER_S

ONStudentFORUPDATEASIFUPDATE(SNO)

BEGIN

DECLARE@SNO_NEWINT,@SNO_OLDINT--声明

SELECT@SNO_NEW=SNOFROMINSERTED--查找新数据和

SELECT@SNO_OLD=SNOFROMDELETED--查找旧数据

UPDATESCSETSNO=@SNO_NEWWHERESNO=@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,单击“执行”按钮,执行该操作,如图1.3所示。

use实验

updateStudent

setSno=1010

whereSno=1001

图1.3

d.单击表SC,使其成为当前表,单击工具栏中的“执行”按钮,更新数据库表SC中的数据,可以看到表SC中的三个1001学号同时自动变成了1010,如图1.4所示。

图1.4

(2)用SQL为数据库表SC创建一触发器Score_SC_TRI(要求:

当插入一个记录或修改成绩时,确保此记录的成绩在0~100分之间)

打开查询编辑器窗口,在窗口中输入如下SQL语句:

USE实验

GO

CREATEtriggerScore_SC_TRI

ONSCFORInsert,update

Asdeclare@score_readint

Select@score_read=gradefrominserted--查找新数据(成绩)

If@score_read>

=0and@score_read<

=100

--判断新数据是否在-100之间

Begin

Print'

操作完成!

'

--是,输出

Return

End

Print'

成绩超出~100之间!

请重新输入。

--否,输出

RollbackTransaction--返回

单击工具栏中的“执行”按钮,执行SQL语句。

在“对象资源管理器”中,展开“数据库”→“实验”→“表”→“dbo.SC”→“触发器”,可以看到Score_SC_TRI已经存在,如图1.5所示。

图1.5

a.在“对象资源管理器”中,打开表SC;

b.在查询编辑器窗口中输入如下SQL语句:

INSERTINTOSCVALUES(1001,4,190)

--成绩为超出范围,而要求重新输入

INSERTINTOSCVALUES(1001,4,100)

--绩为在正常范围内,而插入表中

UPDATESCSETgrade=130WHERESNO=1002ANDCNO=1

UPDATESCSETgrade=60WHERESNO=1002ANDCNO=1

--成绩为在正常范围内,而修改成功

c.单击工具栏中的“执行”按钮,执行SQL语句。

可以看到4调系统信息,表示:

第一条INSERT语句因成绩为190超出范围,而要求重新输入;

第二条INSERT语句因成绩为100在正常范围内,而插入表中;

第三条UPDATE语句因成绩为130超出范围,而要求重新输入;

第四条UPDATE语句因成绩为60在正常范围内,而修改成功,如图1.6所示。

图1.6

d.再次查看SC表中的数据,可以看到增加了一个记录,修改了一个记录,如图1.7所示。

图1.7

(3)请自行完成:

用SQL为数据库表Course创建一个级联删除触发器TRIGGER_DC(要求:

通过课程名从Course表中删除某课程信息,同时删除SC表中与此课程相关的选课记录)

CREATETRIGGERTRIGGER_DC

ONCourseFORDELETEAS

DECLARE@CNO_OLDINT--声明

SELECT@CNO_OLD=CNOFROMDELETED--查找要删除的数据

DELETEFROMSCWHERECNO=@CNO_OLD--把新数据更新到SC表中

END

在“对象资源管理器”中,展开“数据库”→“实验”→“表”→“dbo.SC”→“触发器”,可以看到Score_SC_TRI已经存在,如图1.8所示。

图1.8

delete

fromCourse

whereCname='

C语言程序设计'

--相当于Cno=4

可以看到2调系统信息,表示:

SC表有两行信息删除成功,Course表有一行信息删除成功,如图1.9所示。

图1.9

d.再次查看SC表中的数据,可以看到删除的两行记录,删除前表SC如图1.7所示,删除后表SC如图1.10所示。

图1.10

2.修改触发器

(1)交互式修改数据库表Student的触发器TRIGGER_S(要求:

若删除数据库表Student中某一个学生的记录信息,则自动删除数据库表SC中与该学生相关的记录信息)

在“对象资源管理器”中,展开“数据库”→“实验”→“表”→“dbo.Student”→“触发器”,右击“TRIGGER_S”,在打开的快捷菜单中,选择“修改”选项,如图2.1所示,打开触发器修改窗口,该窗口中显示了此触发器的定义,如图2.2所示。

图2.1

图2.2

把窗口中的SQL语句修改成下面内容,以实现题目要求:

ALTERTRIGGERTRIGGER_S

ONStudentFORDELETE

ASDECLARE@SNO_DELint

SELECT@SNO_DEL=SNOFROMDELETED

DELETEFROMSCWHERESNO=@SNO_DEL--删除表SC中相关信息

·

单击工具栏中的“分析”按钮,检查语法是否正确。

单击“执行”按钮,保存创建的触发器。

展开“数据库”→“实验”→“表”→“dbo.Student”→“触发器”,双击TRIGGER_S,打开触发器修改窗口,可以看到TRIGGER_S已经修改,如图2.3所示。

图2.3

验证触发器TRIGGER_S的功能:

在数据库表Student中选择任意一个学生记录,将其删除,查看数据库表SC中与其对应的选课记录的变化。

fromStudent

whereSno='

1002'

SC表有三行信息删除成功,Student表有一行信息删除成功,如图2.4所示。

图2.4

d.再次查看SC表中的数据,可以看到删除的两行记录,删除前表SC如图1.10所示,删除后表SC如图2.5所示。

图2.5

(2)请自行完成:

用SQL修改数据库表Course的触发器TRIGGER_DC(要求:

通过课程号从数据库表Course中删除某课程信息,同时删除数据库表SC中与此课程相关的记录)

打开触发器修改窗口,把窗口中的SQL语句修改成下面内容,以实现题目要求:

ALTERTRIGGERTRIGGER_DC

ONCourseFORDELETE

ASDECLARE@CNO_OLDINT--声明

SELECT@CNO_OLD=CNOFROMDELETED--查找要删除的数据

DELETEFROMSCWHERECNO=@CNO_OLD--把新数据更新到SC表中

展开“数据库”→“实验”→“表”→“dbo.Course”→“触发器”,双击TRIGGER_S,打开触发器修改窗口,可以看到TRIGGER_S已经修改,如图2.6所示。

图2.6

在数据库表Course中选择任意一个学生记录,将其删除,查看数据库表SC中与其对应的选课记录的变化。

whereCno=2

SC表有一行信息删除成功,Course表有一行信息删除成功,如图2.7所示。

图2.7

d.再次查看SC表中的数据,可以看到删除的两行记录,删除前表SC如图2.5所示,删除后表SC如图2.8所示。

图2.8

3.删除触发器

(1)交互式删除数据库表Student的触发器TRIGGER-S:

在“对象资源管理器”中,展开“数据库”→“实验”→“表”→“dbo.Student”→“触发器”,右击“TRIGGER_S”,在打开的快捷菜单中选择“删除”选项,如图3.1所示,弹出“删除对象”对话框,如图3.2所示。

图3.1

图3.2

单击“确定”按钮,触发器TRIGGER_S即被删除。

(2)用SQL删除数据库表Course的触发器TRIGGER_DC

在查询编辑器窗口中输入下列SQL语句

DROPTRIGGERTRIGGER_DC

单击工具栏中的“执行”按钮,执行SQL语句

查看数据库“实验”中触发器对象的变化,如图3.3所示。

图3.3

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1