《数据库实验报告十》由会员分享,可在线阅读,更多相关《数据库实验报告十(9页珍藏版)》请在金锄头文库上搜索。
1、实验报告专业:计算机、软件工程 班级:13软件1班 学号:201324133104姓名:王熙婷课程名称:数据库系统原理2014 -2015学年度第2学期课程类别:专业必修实验时间:2015年丄月4日实验名称:实验十一一触发器实验目的和要求:(1)理解触发器的触发过程和类型。(2)掌握创建触发器的方法。(3)掌握查看触发器的方法。(4)掌握修改器的方法。(5)掌握删除视图的实现方法。实验软硬件要求:(1)有一台安装 Windows 2000、Windows XP或 Windows NT操作系统的计算 机(2)安装 Microsoft SQL Server 2000或 SQL Server 200
2、5任意一版本(个人版、 企业版、标准版)(3)实验人员应该掌握了 SQL Server 2005的安装过程,并对Microsoft SQLServer 2000或SQL Server 2005的软件组成、各组成软件的用户操作界面及 其主要功能作用有一定程度的了解。(4)实验前创建好ShiYan数据库。实验内容、实验过程、所遇问题及其解决方法(附页)实验总结及心得体会:实验要求和目的基本掌握对于不懂的问题通过上网搜索和书上查找等方式,不仅能快速地掌握,还能了 解到该问题涉及的其他方面的知识。(3)要勤于动手,敢于尝试,对每一个知识点学会拓展。评定成绩:批阅教师:2015年 月 日实验内容、实验过
3、程、所遇问题及其解决方法针对数据库ShiYan完成以下相关触发器操作任务。(1)利用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_inserton sfor insertas if(select count(*)from insertedwhere status l
4、ike 1,2,3,4,5%)=0beginprint status字段不是以1,234,5字符打头的!rollback transactionendK SQLQueryl.sql - PCB-ShiYan (sb (54)*日 create triaaei s_insert n 3fqi insertA as if select co j.t (.froK inseruedwliere stafjs lz.ke r lr2f3ff5%,=0R beginpxint f states字段不是以字符打头的 rollback traTLsactionlend1昴消才命令已成功完成。(2)利用“企业
5、管理器”为表P建立名为p_weight的update触发器,通过 p_weight触发器以保证修改P表中数据时,限制weight字段的值在1000以 内。如果修改后的记录的weight字段值超过了 1000,则拒绝修改记录,并且 输出提示信息“当前被修改记录的weight字段值不在1000之内,请重新给定 该字段值。”否则允许修改记录,并且输出提示信息当前被修改记录的weight 字段值满足要求,成功完成修改操作。”create trigger p_weighton pfor updateas if(select count(*)from insertedwhere weight1000)=0
6、beginprint 当前被修改记录的weight字段值不在1000之内,请重新给定该字段值。 rollback transaction end else print 当前被修改记录的weight字段值满足要求,成功完成修改操作。QLQuery1.sql - PU.SkShiYan (萌(54)*日 create triggeron pfor _ipdateA as if select cotj.)from insertedwhere 唧已ight.50)0beginprint 不满足删除条件。rollback transaction endelseprint 相应的工程项目信息已经成功删除。
7、(4)利用Transact-SQL语言修改触发器s_insert,修改后的s_insert触发器能保证在修改S表中数据记录时status字段的值不允许修改。alter trigger s_insert on sfor updateas if(select count(*)from inserted,swhere inserted.status=s.status)0beginprint status字段不是以1,234,5字符打头的!rollback transactionend(5)将触发器s_insert的名称更改为s_status_update。exec sp_rename s_inser
8、t,s_status_update*CjN二|曰|由 3容J墮旦J Qz &QLQu&ry1.sql - PC.&.ShiYan (sb (54)*exec 3p renair.e 1 s insert1 f * s status update *a消息注意:更改对象名的任一部分都可能会破坏脚本和存储过程O(6)查看数据表P中所有的inserted触发器,并观察其执行结果。exec sp_helptrigger p,inserted7(7)查看触发器j_delete的定义文本。exec sp_helptext j_delete(8)查看触发器p_weight的所有者和创建日期。exec sp_
9、help p_weight=阳F rtV h I 日 I ij m曲竺J J |SQLQueryl.sql - PC.8.hiYan (sa (54)*exec sp help p weight *结果1Owner Type Cneated_dat etimeNamep_weight : dbo trigger 20154J7-B4 13:33:2u .693(9)分别利用“企业管理器”和SQL语言删除触发器s_status_update。“企业管理器”:IEI+El日丨_i視国_3 dbo.S+ _j 列+漣日越器m s_status_update + 一j索引二 dbo.&PJ_3 dbo.SumOfSQSQL语句: drop trigger s_status_update&QLQu eryl.sql - PC_&ShEVan (sa (54)*j dbo.SLJ列漣_J的束匸I索引