《数据库实验6触发器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据库实验6触发器

实验6 触发器 一、实验目的 1.了解触发器的基本概念和功能。 2.掌握触发器的创建和使用方法。 二、相关知识 创建触发器的语法为: CREATE TRIGGER 触发器名 ON 表名 [WITH ENCRYPTION] FOR {[DELETE][,][INSERT][,][UPDATE]} [WITH APPEND] [NOT FOR REPLICATION] AS SQL 语句组 其中: 1)WITH ENCRYPTION 为加密选项。 2)DELETE 选项为创建DELETE 触发器。DELETE触发器的作用是当对表执行DELETE操作时触发器被激活,并从指定表中删除元组,同时将删除的元组放入一个特殊的逻辑表(delete表)中。触发器的动作可以检查delete表中的数据,以确定下一步该如何处理。 3)INSERT选项为创建INSERT触发器。INSERT触发器在对指定表中执行插入数据操作时激活,激活后将插入表中的数据拷贝并送入一个特殊的逻辑表(inserted 表)中,触发器会根据INSERT表中的值决定如何处理。 4)UPDATE选项为创建UPDATE触发器。UPDATE触发器仅在对指定表中进行更新数据操作时激活。UPDATE触发器激活后把将要被更新的原数据移入delete表中再将要被更新后的新数据的备份送入insert表中,UPDATE触发器对delete和inserted表进行检查,并决定如何处理。 5)NOT FOR REPLICATION 选项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。 触发器是一种特殊类型的存储过程,用来保证数据完整性,当对它所保护数据进行插入、修改和删除时自动激活,对改变的数据进行检查,以防止对数据进行不正确、未授权或不一致的修改。一个触发器只适用于一个表,每个表最多只能有三个触发器,它们分别是INSERT、UPDATE和DELETE触发器。触发器仅在实施数据完整性和处理业务规则时使用。有关更详细的信息,感兴趣的同学可以在帮助中搜索主题。 三、实验内容 (一)简单触发器练习: 1.用SQL Server Management Studio创建触发器,当学生表S中有新的记录插入时,提示用户在选课表SC中加入相应的选课记录。具体步骤: 1)打开SQL Server Management Studio扩展到学生选课数据库,选择S表→触发器,右键单击,选择“新建触发器”,出现的触发器Transact-SQL语句输入窗口: CREATE TRIGGER TIGGER_S ON S FOR INSERT AS BEGIN PRINT ‘学生表S中有新的同学加入,别忘了给他增加选课记录’ END 参考下图1【注意下图中表名是中文,比如“学生”,我们这里用英文S】。 图1触发器Transact-SQL语句输入窗口 2)在文本框中输入创建触发器的Transact-SQL语句(语句见上图),单击“检查语法”按钮进行语法的检查,检查无误后,单击“!执行”按钮。 3)打开查询分析器,在顶部的下拉框中选中“学生选课”数据库,运行INSERT语句在学生表中加入一条学生记录,如: INSERT INTO S VALUES(’S012’,刘东’,’男’,’22’,’,’D2’); 验证触发器,看看会出现什么结果? 4)创建好以后还可以在名字弹出项中选择要修改的触发器进行修改或删除。 (二)绩点计算 【特别注意,以下实验语句可以参考bb平台上的补充课件《T-SQL触发器实验参考资料》】 绩点计算方法请参考本文档最后面。 (1)课程学分绩点Grade的自动更新 1)添加1列: 用alter table … add … 语句给选课表SC增加一个属性:课程学分绩点Grade, 数据类型为 numeric(4,1); alter table sc add Grade numeric(4,1) 2)创建一个触发器:当学生的某一门课的成绩有变化时(update)自动修改Grade值,并进行验证,采用after触发器 create trigger upd_Grade on SC after update as if update(Score) --使用update(列)函数表示修改了某列的值 begin if ((select Score from inserted) 60) --成绩小于,绩点为 update SC set Grade = 0 from inserted where SC.Snum = inserted.Snum and SC.Cnum = inserted.Cnum and inserted.Score is

文档评论(0)

wwy463wj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档