实验报告六(内容及要求)

2020-02-21 17:42

实验成绩

《数据库系统原理及应用》实验报告

实验六: SQL Server触发器

专业班级: 软件1305班 姓名:庄建伟 学号:201316920319 完成时间:15/10/30 一、实验目的

理解触发器的作用和工作机制;熟练掌握后触发器和替代触发器的区别;熟练掌握后触发器和替代触发器的创建。 二、实验内容及要求

(使用前面实验建立的student、course和sc表实现)

创建满足下述要求的DML触发器(分别用前触发器和后触发器实现),并验证触发器执行情况。

任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。

任务2:限制每个学生所选修的课程总学分在20~30范围内。

任务3:限制每个学生选课总门数不能超过6门(设只针对单行插入操作) 任务4:限制不能删除有人选的课程。 三、实验结果(含运行程序和相应执行情况截图)

任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。 后触发器:

create trigger Zhuang_J_W on student after insert

as

declare @dept char(10)

select @dept=student.sdept from student,inserted where student.sno=inserted.sno

if @dept not in ('计算机系','信息管理系','数学系','通讯工程系') begin rollback transaction

raiserror ('不能输入其他系的学生信息!',16,10) end else

print('有新的学生信息插入到学生表中')

insert into student

values('000002','朱四','男','20','体育系')

前触发器:

create trigger sal_log on student instead of insert as

if exists (select* from inserted

where sdept in ('计算机系','信息管理系','数学系','通讯工程系')) insert into student select* from inserted

insert into student

values('000004','刘五','男','22','数学系')

任务2:限制每个学生所选修的课程总学分在20~30范围内。 后触发器:

create trigger sbase_sb on course after insert as

if not exists (select sum(ccredit) from inserted having sum(ccredit) between 20 and 30) begin rollback transaction

print('你输入的学生的总学分不符合要求') end

else print'插入新的学生信息'

前触发器:

use stu

create trigger s_boy on course instead of insert as

if not exists (select sum(ccredit) from inserted

having sum(ccredit) not between 20 and 30 ) insert into course select * from inserted

任务3:限制每个学生选课总门数不能超过6门(设只针对单行插入操作) 后触发器:create trigger ste_al on sc after insert

as

if (select count(*) from sc

join inserted on inserted.sno=sc.sno)>6 begin

print'你选的课程过多' rollback end

前触发器:

create trigger stable_als on sc instead of insert as

if (select count(*) from sc


实验报告六(内容及要求).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北语16秋《毛概》作业1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: