SQL erver2008触发器练习题.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文档。上传文档
查看更多
触发器练习题 1、 创建触发器 在学生信息管理系统中,学生信息表包含列“学号”、“姓名”、“性别”、“出生年月”、“班级号”;班级信息表中包含列“班级号”、“班级名称”、“人数”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0~100分。(用附录中的脚本创建) --1)在student上创建INSERT触发器stu_insert,要求在student表中插入记录时(要求每次只能插入一条记录),这个触发器都将更新class表中的class_nun列。并测试触发器stu_insert。 create trigger stu_insert on student for insert as if @@rowcount1 begin RAISERROR(You cannot insert more than one student at a time., 16, 1) ROLLBACK TRAN return --注意此处的return语句不能省略,因为在触发器脚本中的ROLLBACK TRAN语句之后还存在语句,那么将会执行这些语句,而为了其后的语句不执行,必须加入return语句 end update class set class_num=class_num+1 where class_id=(select class_id from inserted) print class表中数据更新成功 go --测试1 insert into student select 0601012,丽,女,1986-07-11, 0601 union all select 0601013,梅,女,1988-02-07, 0601 --测试2 insert into student values(0602011,文,女,1986-09-21, 0602) --2)修改题1中创建的INSERT触发器stu_insert,要求在student表中插入记录时(允许插入多条记录),这个触发器都将更新class表中的class_nun列。并测试触发器stu_insert。 alter trigger stu_insert on student for insert as update class set class_num=class_num+(select count(class_id) from inserted where class.class_id=inserted.class_id ) print class表中数据更新成功 go --测试1 insert into student select 0601012,丽,女,1986-07-11, 0601 union all select 0601013,梅,女,1988-02-07, 0601 --测试2 insert into student values(0602011,文,女,1986-09-21, 0602) --3)在student上创建DELETE触发器stu_delete,要求在student表中删除记录时,这个触发器都将更新class表中的class_nun列。并测试触发器stu_delete。 create trigger stu_delete on student for delete as update class set class_num=class_num-(select count(class_id) from deleted where class.class_id=deleted.class_id ) go --测试1 delete from student where stu_id=0601001 --测试2 delete from student --4)为防止其他人修改成绩,在score上创建UPDATE触发器sc_update,要求不能更新score表中的score列。测试触发器sc_update。 create trigger sc_update on score for update as if update(score) begin print 不允许修改score列 rollback tran end go --尝试修改score列 update score set score=99 2、查看触发器相关信息:使用系统存储过程sp_help,sp_helptext,sp_helptrigger查看触发器相关信息。 exec sp_help exec sp_help sc_update exec sp_helptext sc_update exec s

文档评论(0)

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

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

1亿VIP精品文档

相关文档