- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库原理及应用实验报告 7.doc
实验成绩
《数据库系统原理及应用》
实
验
报
告
七
专业班级: 计算机科学与技术
学 号: 201116910233
姓 名: 范晓曈
指导教师: 苏小玲
2013年 11 月 28 日
实验七名称: SQL Server触发器和游标
实验内容及要求
(使用教材建立的student、course和sc表实现)
1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
任务2:限制每个学期所开设的课程总学分在20~30范围内。
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)
任务4:限制不能删除有人选的课程
2.创建满足下述要求的游标
任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。
任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。
任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。要求按教材11-21所示样式显示结果数据。
二、实验目的
掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。
实验步骤
创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。
任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。
create trigger tri_limitedept
on student after insert,update
as
IF EXISTS(SELECT * FROM INSERTED
WHERE sdept!=计算机 and sdept!=信息管理系
and sdept!=数学系 and sdept!=通信)
ROLLBACK
insert into student
values(001,一,女,通信工程系,1991-01-01,JAVA,5.0)
任务2:限制每个学期所开设的课程总学分在20~30范围内。
create trigger tri_limit
on course after insert,update
as
if exists(select sum(credit) from course
where semester in (select semester from inserted ) having sum(credit) not between 20 and 30 )
print你所插入的课程所在学期的总学分不在~30这个范围内
Rollback
insert into Course
values(C007,0007,007,JAVA,3,2)
任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)
create trigger tri_count
ON SC after INSERT
as
if(select count(*) from sc where sno=(select sno from inserted))4
begin
print 选课超过限额
rollback
End
insert into sc
values(201116910231,C005,2013.09.01,85,75)
create trigger tri_Deletekc
ON course AFTER DELETE
AS
IF EXISTS(SELECT * FROM sc join DELETED d on sc.cno=d.cno )
BEGIN
PRINT 不能删除有学生选的课程
ROLLBACK
END
delete from course where cno=C001
declare @name varchar(200),@dept varchar(200),@sscore varchar(10) --声明存放结果集的变量
declare java_cursor cursor for --声明游标
select s.sname,s.sdept,sc.sscore
from student s join sc on s.sno=sc.sno
join course c on sc.cno=c.cno
where cname=java
文档评论(0)