数据库实验3 触发器报告

上传人:沈*** 文档编号:142111308 上传时间:2022-08-24 格式:DOC 页数:8 大小:135KB
返回 下载 相关 举报
数据库实验3 触发器报告_第1页
第1页 / 共8页
数据库实验3 触发器报告_第2页
第2页 / 共8页
数据库实验3 触发器报告_第3页
第3页 / 共8页
点击查看更多>>
资源描述
数据库技专题训练I(2014年春)序号:数据库专题训练-触发器实验报告系别:计算机科学与技术班级:计11-3班姓名:黄娟娟学号:11101020324成绩:评语:指导教师签字: 日期: 实验二 触发器一、 实验环境及要求 触发器是一种特殊的存储过程,不能被用户直接调用。可以包含复杂的 SQL语句。在特定事件发生时自动触发执行,通常用于实现强制业务规则和数据完整性。DML触发器分为两种类型:AFTER 触发器和 INSTEAD OF触发器。 通过本次实验掌握触发器的创建方法以及使用方法。二、 实验步骤及结果1) 创建一个名为tri_Insert_S的触发器,测试改触发器的执行情况,并给出实验结果。当插入的新记录中Sage的值不是18至25之间的数值时,就激活该触发器,撤销该插入操作,并给出错误提示。use SXCJgo create trigger tri_Insert_S on Safter insertasif exists (select * from inserted where Sage=18 and Sage=0 and Score=100) begin insert into SC select * from inserted print插入成功! end else begin rollback transaction print分数必须在到之间,插入数据失败! end end goinsert into SCvalues(S3,C3,110)go显示如下: 6) 创建一个名为tir_Update_S的触发器,实现:当学生基本表S中的学号Sno发生变化时,SC选课记录中对应的学号也发生改变。并通过测试数据验证该触发器的执行情况。use SXCJgo if exists(select name from sysobjects where name=tir_Update_S and type=TR) begin drop trigger tir_Update_S endgocreate trigger tir_Update_S on Safter updateas declare OldSno varchar(20),newSno varchar(20)select OldSno=Sno from deleted select newSno=Sno from insertedif (update(Sno) begin update SC set SC.Sno=newSno where SC.Sno=OldSno endelse rollback transactiongoupdate Sset Sno=S11where Sno=S1select * from Sselect * from SC显示如下: S表: SC表: 7) 创建一个名为tri_Delete_C 的触发器,实现:删除一门课程时候,首先判断该课程有否有人选,如果有人选,则不能删除并通过测试数据验证该触发器的执行情况。use SXCJgocreate trigger tri_Delete_C on Cinstead of deleteas if(exists (select * from SC,deleted where SC.Cno=deleted.Cno) begin rollback transaction print该课程无法删除! endelse begin delete from C where Cno in( select Cno from deleted) end godelete from Cwhere Cno=C1go 显示如下: 三、 实验中的问题及解决方法 问题:对update触发器不是很熟悉,在建立此触发器的时候,对于deleted表和inserted表调用的不当,导致老出现问题。 解决方法:通过查询资料,了解到deleted表是存放更新前的数据,而inserted表是存放更新后的数据。通过定义变量,先把表内的数据赋值到变量上,然后能够灵活应用。四、 实验总结 通过实验大概学习了AFTER 触发器和INSTEAD OF触发器。实践了触发器的创建方法以及使用方法。 其中,AFTER 触发器又称为后触发器,该类触发器是在引起触发器执行的修改语句成功完成之后执行。如果修改语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。此触发器只能定义在表上,不能创建在视图上。可以为每个触发操作(INSERT、UPDATE或DELETE)创建多个AFTER触发器。 INSTEAD OF触发器(又称为替代触发器)当引起触发器执行的修改语句停止执行时,该类触发器代替触发操作执行。该类触发器既可在表上定义,也可在视图上定义。对于每个触发操作(INSERT、UPDATE和DELETE)只能定义一个INSTEAD OF触发器。 由于对INSTEAD OF触发器掌握不是很牢固,在建立过程中出现问题。而且对于update触发操作使用的不是很好。在实验过程,通过老师上课的ppt以及在网上查询资料都能够顺利的解决在实验中发生的问题。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!