触发器实验报告
实验报告课程名称数据库系统原理实验日期实验项目名称触发器实验地点图523实验类型口验证型设计型口综合型学时2、实验目的及要求(本实验所涉及并要求掌握的知识点)1、掌握使用交互式和T-SQL方式分别实现触发器的创建、修改、删除及其使用 方法。2、掌握触发器的功能。3、分析并理解触发器的实现机制。二、实验环境(本实验所使用的硬件设备和相关软件)微型计算机Sql Server2005Windows XP三、实验内容及步骤1、创建和执行触发器A、交互式为S表创建一个级联更新触发器Trigger_s。要求:若修改S 表中一学生的学号,则SC表中与该学生相关的学号自动修改。create trigger trigger_s on s for update as if update(sno)begindeclare sno_del char(6),sno_ins char(6 select snodel=sno from deleted select snoins=sno from inserted if update(sno)update sc set sno=sno_ins where sno sno_del endB、交互式为SC表创建一个限制更新触发器Trigger_sc。要求:若修 改SC表中一记录的学号,则要检查S中是否存在该学号相同的记录,若存在 则不许修改,若不在则可以修改。create trigger trigger_sc on sc for update as if update(sno)begindeclare sno_del char(6select sno_del sno from deletedif (select sno from s where sno sno_del) is not null Rollback Transactionelsedelete from sc where sno=sno_delendC、用SQL方式为SC表创建一个触发器score_sc_tri。要求:当插入一个记录 或修改成绩时,确保成绩在0-100分之间。create trigger score_sc_tri on sc for update,update asdeclare score_int intselect score_int= score from inserted if (score_int<=100 and score_int>= 0 beginprint '操作完成!'returnend else begin print '成绩应在-100之间!Rollback Transactionend D、用SQL方式为C表创建一个级联删除触发器Trigger_c。要求:当从C表中删除某课程信息时,同时删除SC表中此课程相关的选课记录。create trigger Trigger_c on c for deleteas declare cno_del char(6select cno_del=cno from deleteddelete from sc where cno cno_del2、修改触发器A、交互式修改触发器Trigger_s。要求:若删除S表中某一学生的记 录信息,则自动删除SC表与该学生相关的记录信息。-首先删除原来的触发器 Trigger_screate trigger Trigger_son sfor deleteas declare sno_del char(6Select sno_del=sno from deleteddelete from sc where sno sno_delB、用SQL方式修改数据库C表触发器Trigger_c。要求:从数据库表C中删除 某课程信息时,同时删除表SC和TC中此课程相关记录。alter trigger trigger_c on cfor deleteasbegindelete sc where cno in (select cno from deleted) end3、删除触发器A、用交互方式删除S表中的触发器Trigger_s。点击数据库jxsk,点击表,点击c表,触发器,点击触发器Trigger_s右单击, 删除,在弹出的框中点确定就行了。B、用SQL方式删除C表中的触发器Trigger_c。drop trigger trigger_c四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)1A、测试如下: - update 5 set 5no=15B' where 5no = '51'tS消息营行受影响)<1行受季响)1B、 测试如下:<update sc set sno=1sO1 where sno = 13 Ip因消息消息弱凹,级别或状态1,第【行 事务在触发器中结束。批处理已中止-1C、测试如下update sc set sc re = 12 1 iirliere sno = 1 s 11 anri ciio3 1 czri身消息成绩应在DT之间!消息3609,级别状态L第L行事务在触发器中结束。批处理已中止。update sc set- 3Coep=80| TijhFEP stio=1 al1 and cnu 1 c2_J消息操作完成!(1行受影响】1D、测试如下delete froni c T-Tliere ciic 1 c2 1<函消息(4行受影响)(1行受影响)2A、测试如下。” - v、 - delete s where 3no=1351J消息(1行受影响】(1行受卷响】2B、测试如下- - -d.e Lete c where cno=1 c5' |虽消息<3行受影响】(1行受影响)五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)通过本次实验使我更深刻的了解到,触发器的原理啊与存储过程是十分类似的, 我们可以通过对各表编写触发器来完善对各数据表及数据表间的管理。实验评语实验成绩指导教师签名:年 月 日