教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

SQL Server实训报告十 作业

来源:网络收集 时间:2026-08-15
导读: 日期: 2012 年 5 月 11日 班 级:2010级计算机多媒体技术2班 一、实训目的和要求 1、理解触发器的作用; 2、了解触发器和一般存储过程的区别; 3、掌握创建、修改及删除触发器的方法; 4、理解触发器执行的过程。 二、实训所需仪器、设备 硬件:计算机 软件

日期: 2012 年 5 月 11日 班 级:2010级计算机多媒体技术2班

一、实训目的和要求

1、理解触发器的作用;

2、了解触发器和一般存储过程的区别; 3、掌握创建、修改及删除触发器的方法; 4、理解触发器执行的过程。

二、实训所需仪器、设备

硬件:计算机

软件:操作系统Windows XP、SQL Server 2005

三、实训内容

(一) 简单触发器的创建和使用

1、在student数据库中t_course表创建一名为myt1的AFTER触发器,要求实现以下功能:当插入一条记录后提示“已插入一条新记录”,并验证此触发器。

DECLARE @msg char(30) SET @msg='已插入一条新记录!' PRINT @msg

命令已成功完成。

USE STUDENT GO

insert into t_course

(c_number,c_name,hours,credit)

values('10010211','高等数学','11','4') GO

已插入一条新记录!

(1 行受影响)

2、在student数据库中t_course表创建一名为myt2的AFTER触发器,要求实现以下功能:当删除一条记录后提示“已删除一条记录”,并验证此触发器。

DECLARE @msg char(30) SET @msg='已删除一条记录' PRINT @msg

命令已成功完成。

USE student GO

DELETE FROM t_course WHERE c_number='10010211' GO

已删除一条记录

(1 行受影响)

3、在student数据库中t_course表创建一名为myt3的AFTER触发器,要求实现以下功能:当修改一条记录后提示“已修改一条记录”,并验证此触发器。

DECLARE @msg char(30) SET @msg='已修改一条记录' PRINT @msg

已修改一条记录

4、在student数据库中t_course表创建一名为myt4的INSTEAD OF触发器,要求实现以下功能:当删除一条记录之前提示“不能删除此表的记录!”,并验证此触发器,检查是否能删除此表的记录。

USE STUDENT GO

CREATE TRIGGER TR_myt4 ON T_COURSE INSTEAD OF DELETE AS

PRINT 'INSTEAD OF 触发器开始执行……'

PRINT '本表中的数据不允许被删除!不能执行删除操作!' GO

命令已成功完成。

USE student GO

DELETE FROM t_course WHERE c_number='20010203' GO

INSTEAD OF 触发器开始执行……

本表中的数据不允许被删除!不能执行删除操作!

(0 行受影响)

删除以上创建的所有触发器。

(二) 较复杂的触发器的创建和使用

1、创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入更新类型的触发器scoreCheck,当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在0至100分之间。

CREATE TRIGGER TR_ScoreCheck ON T_SCORE

FOR INSERT, UPDATE AS

IF UPDATE(SCORE)

PRINT 'AFTER触发器开始执行……' BEGIN

DECLARE @ScoreValue real

SELECT @ScoreValue=(SELECT SCORE FROM inserted) IF @ScoreValue>100 OR @ScoreValue<0 PRINT '输入的分数有误,请确认输入的考试分数!' END

命令已成功完成。

--验证TR_ScoreCheck触发器的功能 USE student GO

PRINT '在t_score中插入记录时触发器执行结果:' PRINT ''

INSERT INTO t_score

VALUES('0554112','10010218',-35) INSERT INTO t_score

VALUES('0554113','100102183',152) GO

在t_score中插入记录时触发器执行结果:

AFTER触发器开始执行……

输入的分数有误,请确认输入的考试分数!

(1 行受影响)

AFTER触发器开始执行……

输入的分数有误,请确认输入的考试分数!

(1 行受影响)

2、创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入更新类型的触发器scoreCheck2,当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在0至100分之间,若不在,则不能插入或修改,并给出提示。代码段如下:

CREATE TRIGGER scoreCheck2 ON t_score FOR insert, update AS

declare @ScoreValue as int

select @ScoreValue =(select score from inserted) if @ScoreValue <0 or @ScoreValue >100 begin

rollback transaction

print '数据不正确不能修改'

end

验证上面创建的触发器,检查当输入的分数不在0到100之间,能否保存分数。此功能的实现是依赖代码段的黑体字标识的语句rollback transaction来实现的,其作用是回滚变动的数据。教材没有此语句。

--验证TR_ScoreCheck触发器的功能 USE student GO

PRINT '在t_score中插入记录时触发器执行结果:' PRINT ''

INSERT INTO t_score

VALUES('0554112','10010218',-35) INSERT INTO t_score

VALUES('0554113','100102183',152) GO

在t_score中插入记录时触发器执行结果:

AFTER触发器开始执行……

输入的分数有误,请确认输入的考试分数! 数据不正确不能修改

消息3609,级别16,状态1,第3 行 事务在触发器中结束。批处理已中止。

3、根据教材第4章P68创建一个检查约束,实现上述2的功能。体会触发器与

检查约束功能上的相似之处。

4、在student数据库中t_course表创建一名为twofield的AFTER触发器,要求实现以下功能:当在hours(学时)和credit(学分)字段插入或修改学时或学分后,触发该触发器,检查学时是否是大于0小于200的整数,并且学分是否是大于0小于10的实数,若不满足这两个条件,则不允许插入或修改,并给出提示。

CREATE TRIGGER twofield ON t_score

FOR insert, update AS

declare @ScoreValue as int,@aa as int

select @ScoreValue =(select score from inserted),@aa=(select c_number from inserted)

if @ScoreValue <0 or @ScoreValue >100 and @aa<0 or @aa>10 begin

rollback transaction print '数据不正确不能修改' end

命令已成功完成。

--验证TR_ScoreCheck触发器的功能 USE student GO

PRINT '在t_score中插入记录时触发器执行结果:' PRINT ''

INSERT INTO t_score

VALUES('0554112','10010218',-35) INSERT INTO t_score

VALUES('0554113','100102183',152) GO

在t_score中插入记录时触发器执行结果:

AFTER触发器开始执行……

输入的分数有误,请确认输入的考试分数! 数据不正确不能修改

消息3609,级别16,状态1,第3 行 事务在触发器中结束。批处理已中止。

5、根据教材第4章P68创建一个检查约束,实现上述4的功能。体会触发器与检查约束功能上的相似之处。

6、创建一个AFTER触发器,要求实现以下功能:在t_student表上创建一个删除类型的触发器stu_delete,当在t_student表中删除某一条记录后,触发该触发器,在t_score表中删除与此学号对应的记录。

CREATE TRIGGER TR_Stu_Delete ON T_STUDENT FOR DELETE AS

PRINT '删除触发器开始执行……' DECLARE @StuNum char(10)

PRINT '把在T_ST …… 此处隐藏:4068字,全部文档内容请下载后查看。喜欢就下载吧 ……

SQL Server实训报告十 作业.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1762099.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)