数据库实验八
更新时间:2023-09-25 04:33:01 阅读量: 综合文库 文档下载
计算机科学与技术系
实 验 报 告
专业名称 软件工程 课程名称 数据库原理与设计 项目名称 触发器及应用
班 级
学 号 姓 名
同组人员 无
实验日期 2014/12/23
一、实验目的与要求:
(简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。)
1.复习和掌握教材5.6节内容。
2.预习SQL Server软件的使用和SQL Server中触发器的概念、创建和执行过程。 3.准备好上机所需的程序。
4.学习触发器的使用,加深对触发器功能和作用的理解。 5.体会触发器执行的时机。
二、实验内容
(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、算法原理、实验仪器、设备选型及连线图、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 )
(1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。
(2)为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。 (3)自行再分别设计2~3个触发器(在实验报告中要准确描述功能需求)。 (4)设计并执行相关的操作,体会DML触发器的效果和作用。
实验原理
1. 建立触发器的语句是:
CREATE TRIGGER [schema_name].trigger-name ON {table |view}
FOR {INSERT | UPDATE | DELETE } AS
[IF UPDATE (column) [{AND | OR} UPDATE (column)…]] sql-statement
create trigger xuanke on 选课
for insert,update as
declare @amount int, @number char(8) select @number=学号 from inserted if @number is not null begin
select @amount=(select count(*) from 选课
where 成绩 <60 and 学号=@number) if @amount>=5 begin
raiserror('此学生的累计不及格科目已达到门',16,10) rollback transaction
end end 插入操作
insert into 选课 values('12001','6','55') insert into 选课 values('12001','7','59') insert into 选课 values('12001','8','30') insert into 选课 values('12001','9','56') 更新操作
update 选课 set 成绩=66
where 学号=12001 and 课程编号='6' update 选课 set 成绩=45
where 学号=12001 and 课程编号='8'
create trigger kechengbiao on 课程 for insert,update as
declare @professional char(10) select @professional=职称 from 教师
where 教师编号 in( select 责任教师
from 课程
where 课程性质='专业基础')
if @professional not in('教授','副教授') begin
raiserror ('操作有误,禁止!',16,1) rollback transaction end
insert into 课程 values ('11','c++','14001',8,'专业基础') insert into 课程 values ('12','计算机网络','14002',8,'公共基础') update 教师 set 职称='教授'where 教师编号=14006
update 课程 set 课程性质='专业基础'where 责任教师=14008
三、实验分析与小结:
(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析; 有待优化思路)
问题一:消息提示end 附件有语法错误。
产生原因:一个if 条件对应一个end 语句。但同时,if 条件语句后面必须有begin语句,否则会报错如下图情况。
解决方法:添加 begin 语句,if—begin—end语句要同时存在。
问题二:触发器命令可以成功执行。但不管如何插入或更新某同学的一项或几项成绩(分数<60),消息窗口始终没有警告出现,反而出现如下图所示结果。
产生原因:观察上图消息窗口提示查询已经成功执行。这说明,命令成功执行后,进行插入或更新操作时,程序并没有启动触发器,而是只执行了语句中的查询命令后就终止了。可能是所编语句中无返回值导致。
解决方法:对比书上例7-14发现问题出现在select @number from inserted 这条语句。声明的学号变量@number无对应的值,修改语句select @number=学号 from inserted成功解决。
正在阅读:
数据库实验八09-25
矿业有限公司规章制度汇编05-07
2018届上海市各高中名校高三英语题型分类专题汇编--语法填空-(带03-08
交通事故伤残赔偿计算公式 - 图文12-27
精彩的作文500字合集九篇03-27
教师个人发展三年规划07-28
形势与政策期末论文 2015.12.1006-08
六年级拔高试题7比例 六年级 下册 习题09-02
金融法规案例05-18
重庆建设摩托车股份有限公司实习报告10-24
- 《江苏省环境水质(地表水)自动监测预警系统运行管理办法(试行)》
- 安乐死合法化辩论赛立论稿(浙大新生赛)
- 公共科目模拟试卷公务员考试资料
- 我国固定资产投资FAI对GDP的影响
- 大学生创新创业训练计划项目申请书大创项目申报表
- 完美版—单片机控制步进电机
- 2013资阳中考化学试题
- 18.两位数减一位数退位(397道)
- 工程量计算规则
- 二年级操行评语(下)
- 第3章 流程控制语句
- 浅基桥墩加固技术
- 课题研究的主要方法
- 5100软件说明书 - 图文
- 车间技术员年终总结
- 关于印发《中铁建工集团开展项目管理实验室活动方案》的通知
- 经典诵读结题报告
- 地下水动力学习题答案
- 2018年全国各地高考数学模拟试题平面解析几何试题汇编(含答案解
- 街道办事处主任2018年度述职述廉报告
- 实验
- 数据库
- 高层住宅楼外悬挑脚手架方案2112
- 湖南省建筑市场违法违规不良行为记录公布制度-湘建建〔2015〕185号
- 2010年银行从业考试《个人贷款》习题与解析(11-15)
- Linux基本网络配置
- 物流企业财务管理 - 复习资料
- 2018年陕西省宝鸡市高考物理一模试卷
- 2018年中国牙科激光治疗仪现状分析及市场前景预测(目录) - 图文
- 2010机械制造毕业论文
- 读梁启超《中国历史研究法》
- 地基处理及路基填筑质量控制研究
- 消防器材(灭火器)分布及明细表
- 苏教版小学六年级下册语文《文言文两则》教学设计
- 材料与配方
- 金城江区第六小学首届读书节汇报展示活动主持词(定稿) -
- 诫子书教案说课稿
- 调研报告作业及答案
- 2006年11月统考英语B
- 高压电器设备练习题
- 学生集体外出活动的安全教育讲话稿
- 中外各大企业薪酬待遇情况