资源描述:
《数据库实验3 触发器报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据库技专题训练I(2014年春)序号:数据库专题训练------触发器实验报告系别:计算机科学与技术班级:计11-3班姓名:黄娟娟学号:11101020324成绩:评语:指导教师签字:日期:实验二触发器一、实验环境及要求触发器是一种特殊的存储过程,不能被用户直接调用。可以包含复杂的SQL语句。在特定事件发生时自动触发执行,通常用于实现强制业务规则和数据完整性。DML触发器分为两种类型:AFTER触发器和INSTEADOF触发器。通过本次实验掌握触发器的创建方法以及使用方法。二、实验步骤及结果1)创建一个名为tri_Insert_S的触发器,测试改触发器的执行情况,并给出实验结果。当
2、插入的新记录中Sage的值不是18至25之间的数值时,就激活该触发器,撤销该插入操作,并给出错误提示。useSXCJgocreatetriggertri_Insert_SonSafterinsertasifexists(select*frominsertedwhereSage>=18andSage<=25)print'添加成功!'elsebeginprint'无法添加!'rollbacktransactionendgoinsertintoSvalues('S8','黄丽','女',26,'计算机')insertintoSvalues('S8','黄丽','女',20,'计算机')se
3、lect*fromSgo显示如下:insertintoSvalues('S8','黄丽','女',26,'计算机')insertintoSvalues('S8','黄丽','女',20,'计算机')2)创建一个名为tri_Update_SC的触发器,要求:(1)首先判断数据库中是否已经存在名为tri_Update_SC的触发器,如果存在,首先删除,再创建。(2)当试图修改SC表中的学生成绩时,给出不能随便修改成绩的信息提示。useSXCJgoifexists(selectnamefromsysobjectswherename='tri_Update_SC'andtype='TR')b
4、egindroptriggertri_Update_SCendelseprint'不存在该触发器,可新建。'Go显示如下:createtriggertri_Update_SConSCafterupdateasifupdate(Score)beginprint'不能随意修改成绩!'rollbacktransactionendgoupdateSCsetscore=90Go显示如下:3)使用系统存储过程sp_help,sp_helptext,sp_helptrigger查看触发器相关信息。给出显示结果。useSXCJgoexecsp_help'tri_Insert_S'execsp_hel
5、ptext'tri_Insert_S'execsp_helptrigger'S'go显示如下:4)禁用tri_Update_SC触发器,并演示禁用该触发器后Update的执行情况。useSXCJgoaltertableSCdisabletriggertri_Update_SCupdateSCsetScore='95'whereSno='S1'andCno='C3'print'修改成功!'select*fromSCGo显示如下:5)在SC表上创建一个insteadof类型的触发器,触发器名称为:tri__Insert_SC。实现:当向表SC插入记录时检查分数的合理性,分数必须在0到10
6、0之间,如果不合理就拒绝插入,并给出信息提示,useSXCJgoifexists(selectnamefromsysobjectswherename='tri__InseCrt_SC'andtype='TR')begindroptriggertri__InseCrt_SCendelsebegincreatetriggertri__InseCrt_SConSCinsteadofinsertasifexists(select*frominsertedwhereScore>=0andScore<=100)begininsertintoSCselect*frominsertedprint'插
7、入成功!'endelsebeginrollbacktransactionprint'分数必须在到之间,插入数据失败!'endendgoinsertintoSCvalues('S3','C3',110)go显示如下:6)创建一个名为tir_Update_S的触发器,实现:当学生基本表S中的学号Sno发生变化时,SC选课记录中对应的学号也发生改变。并通过测试数据验证该触发器的执行情况。useSXCJgoifexists(selectnamefromsysobj