数据库原理应用 (存储过程与触发器的应用).docVIP

数据库原理应用 (存储过程与触发器的应用).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据库原理与应用》实验报告 题目:实验七:存储过程与触发器的应用 学号:1148028 姓名:沈宇杰 日期:2013/5/30 实验预习情况: 一:实验目的: ①:掌握创建存储过程的方法和步骤 ②:掌握存储过程的使用方法 ③:掌握创建触发器的方法和步骤 ④:掌握触发器的使用方法 二:实验内容: ①:存储过程的创建、执行和删除 ②:触发器的创建、执行和删除 三:实验示例: 一:创建触发器: 对于STUDENT数据库,表STUDENT的CLASS_ID列与表CLASS的CLASS_ID满足下列参照完整性规则: 7.1创建触发器 A. 向STUDENT插入或修改一记录时,该字段在STUDENT表中的对应值也做相应的修改 B. 修改CLASS表的CLASS_ID字段值时,该字段在STUDENT表中对应值也做相应的修改 C. 删除CLASS表中一记录的同时删除该记录CLASS_ID字段值在STUDENT表中对应的记录 在查询分析器编辑窗口输入下列触发器的代码并执行。 ①:向STUDENT表中插入或修改一记录时,通过触发器检查记录的CLASS_ID值在CLASS表中是否存在,若不存在,则取消插入或删除操 CREATE TRIGGER STUDENTINS ON DBO.STUDENT FOR INSERT,UPDATE AS BEGIN IF(SELECT INS.CLASS_ID FROM inserted INS) NOT IN (SELECT CLASS_ID FROM CLASS) ROLLBACK END GO AFTER 指定 DML 触发器仅在触发 SQL 语句中指定的所有操作都已成功执行时才被触发。所有的引用级联操作和约束检查也必须在激发此触发器之前成功完成。 如果仅指定 FOR 关键字,则 AFTER 为默认值。 不能对视图定义 AFTER 触发器。CREATE TRIGGER CLASSUPDATE ON DBO.CLASS FOR UPDATE AS BEGIN IF(COLUMNS_UPDATED()01)0 UPDATE Student SET CLASS_ID = (SELECT INS.CLASS_ID FROM INSERTED INS) WHERE CLASS_ID = (SELECT CLASS_ID FROM DELETED) END GO 释:COLUMNS_UPDATED():返回一串二进制数,譬如:若要检查第2,3, 4行是否被修改,则计算: 2^(2-1)+2^(3-1)+2^(4-1)= 14,然后COLUMNS_UPDATED() 14即可。 此例题中01则代表了查看CLASS表中的第一行有无被修改。 SET CLASS_ID = (SELECT INS.CLASS_ID FROM INSERTED INS) WHERE CLASS_ID = (SELECT CLASS_ID FROM DELETED) 此语句的意思是:若是CLASS中的CLASS_ID被修改了(删除旧值插入新值,故只要被删除过则认为数据被更新),则相应地修改STUDENT表中CLASS_ID的值。 ③:删除CLASS表中一记录的同时删除该记录CLASS_ID字段值在CLASS表中对应的记录 CREATE TRIGGER CLASSDELETE ON DBO.CLASS FOR DELETE AS BEGIN DELETE FROM Student WHERE CLASS_ID=(SELECT CLASS_ID FROM DELETED) END GO 我觉得是“删除CLASS表中一记录的同时删除该记录CLASS_ID字段值在STUDENT表中对应的记录,实验册上写错了吧。 7.2创建存储过程 ①:添加学生记录的存储过程STUDENTAdd CREATE PROCEDURE STUDENTAdd ( @Sno CHAR(9),@Sname CHAR(8),@Ssex CHAR(2), @Sage SMALLINT,@Sdept CHAR(2),@CLASS_ID NCHAR(10) ) AS BEGIN INSERT INTO Student VALUES(@Sno,@Sname,@Ssex, @Sage,@Sdept,@CLASS_ID) END RETURN GO ②:修改学生记录的存数过程STUDENTUpdate CREATE PROCEDURE STUDENTUpdate ( @SnoN CHAR(9),@Sno CHAR(9),@Sname CHAR(8),@Ssex CHAR(2), @Sage SMALLINT,@Sdept CHAR(2),@CLASS_ID NCHAR(10 )

文档评论(0)

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

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

1亿VIP精品文档

相关文档