- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实 验 报 告
专业: 计算机软件工程 班级:11级软件工程 学号:201124134157
姓名:龙展鹏
课程名称:数据库系统原理 2012 -2013学年度第2学期
课程类别:专业必修
实验时间:2013 年 06 月 15日
实验名称:触发器 实验目的和要求:
理解触发器的触发过程和类型。
掌握创建触发器的方法。
掌握查看触发器的方法。
掌握修改触发器的方法。
掌握删除触发器的方法。 实验软硬件要求:
为了使实验顺利进行,需要有一台计算机,计算机必须安装windows 2000,
windows xp或windows NT操作系统,还必须安装Microsoft SQL 2000
或SQL Server 2005任意一版本(个人版,标准版,企业版)。实验开始前,必须将本章实验四中创建好的SCDB数据库和ShiYan 数据库附加到当前SQL数据库服务器中。实验人员必须掌握数据更新操作的相关的概念,懂得数据的更新的主要类型及基本特点。 实验内容、实验过程、所遇问题及其解决方法
实验内容:
针对实验数据库SHIYAN,完成以下相关触发器操作任务:
利用Transact-SQL语言为S表建立一个名为s_insert的insert触发器,通过s_insert触发器以保证向S表中插入记录时status字段值要以1、2、3、4或5字符打头。
如果插入的记录的status字段值不是以1、2、3、4或5字符打头的,则拒绝插入该记录,并且输出提示信息“status字段值不是以1、2、3、4或5字符打头的!”
实现语句:
create trigger s_insert
on s
for insert
as if(select count(*) from inserted
where status like [1,2,3,4,5]%)=0
begin
print status字段不是以1,2,3,4,5字符打头的!
rollback transaction
end
利用“企业管理器”为P表建立一个名为P_weight的update触发器,通过P_weight触发器以保证修改P表中数据时,限制weight字段的值在1000以内。如果修改后的记录的weight字段值超过了1000,则拒绝修改记录,并却输出提示信息“当前被修改的记录的weight字段值不在1000之内,请重新给定该字段值。”,否则可以修改记录,并且输出提示信息“当前被修改的记录的weight字段值满足要求,完成修改操作。”。
实现语句:
create trigger p_weight
on p
for update
as if(select count(*) from inserted
where weight1000)0
begin
print 当前修改的weight字段不在1000以内,请重新输入字段值
rollback transaction
end
else
print 当前修改记录的weight值满足要求,成功完成修改操作
更新结果:
利用Transact-SQL语言为J表建立一个名为j_delete的delete触发器,通过j_delete触发器保证在删除工程项目表J中记录时,该待删除记录的SPJ表中存在引用关系,并且对应的引用关系记录的供应数量QTY值不少于50,则不能删除该工程项目记录,输出提示信息“不满足删除要求。”;否则可以删除,输出提示信息“相应的工程项目信息已经成功删除。”。
实现语句:
create trigger j_delete
on j
for delete
as if(
select count(*)
from inserted,spj
where inserted.jno=spj.jno and spj.qty50)0
begin
print 不满足删除条件
rollback transaction
end
else
print 相应的工程项目已经删除
运行结果:
利用Transact-SQL语言修改触发器s_insert,修改后的s_insert触发器能保证在修改S表中数据记录时s_insert字段值不可以修改。
实现语句:
alter trigger s_insert
on s
for update
as if(select count(*) from inserted,s
where inserted.status=s.status)0
begin
print status字段不是以1,2,3,4,5字符打头的!
文档评论(0)