- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 《中华民族共同体概论》课件高教社2024版课件合集-第一讲中华民族共同体基础理论+第二讲树立正确的中华民族历史观+第三讲文明初现与中华民族起源+第四章+第五章.pptx VIP
- 《网络架构与优化》课件.ppt VIP
- 安徽黄山国家森林公园旅游资源调查提纲.doc VIP
- 人教部编版(2018)世界历史九年级下册教材() .pdf VIP
- 每日汉语(德语).doc VIP
- 人力资源案例经典讲义.ppt VIP
- 重症医学专业医疗质量控制指标(2024 年版)解读.pptx
- 慢加急性肝衰竭诊治指南(2025 年版).pptx VIP
- 五年级上册 人教版 数学 第三单元《解决问题》课件.pptx
- 食药刑事案件培训课件.pptx VIP
文档评论(0)