数据库实验八:触发器及应用
更新时间:2024-03-12 18:38:01 阅读量: 综合文库 文档下载
数据库实验八:触发器及应用
一、实验目的与要求:
1.实验目的
(1)学习触发器的使用,加深对触发器功能和作用的理解。 (2)体会触发器执行的时机。 2.实验要求
建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值):
(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 2、实验步骤与结果
(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
(2)输入自己编好的程序。 (3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
(1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。 插入触发器:
create trigger xk_trigger on 选课
for insert as
declare @amount int, @xh char(10) select @xh=学号 from inserted if @xh is not null begin
select @amount=(select count(*)from 选课 where 成绩<60 and 学号=@xh) if @amount>=5 begin
raiserror('不及格达到5门',16,10) end end
insert into 选课 values('001','03','50') insert into 选课 values('001','02','50') insert into 选课 values('001','04','50')
更新触发器:
create trigger xk_trigger2 on 选课
for update as
declare @amount int, @xh char(10) select @xh=学号 from inserted if @xh is not null begin
select @amount=(select count(*)from 选课 where 成绩<60 and 学号=@xh) if @amount>=5 begin
raiserror('不及格达到5门',16,10) end end
update 选课 set 成绩=50 where 学号='001' and 课程编号='02' update 选课 set 成绩=50 where 学号='001' and 课程编号='03' update 选课 set 成绩=50 where 学号='001' and 课程编号='04' update 选课 set 成绩=50 where 学号='001' and 课程编号='05' update 选课 set 成绩=50 where 学号='001' and 课程编号='06'
(2)为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。 插入触发器:
create trigger kc_trigger3 on 课程 for insert as
declare @zc char(10),@zrjs char(10),@kcbh char(10),@kcxz char(10) select @kcbh=课程编号,@zrjs=责任教师 from inserted if @kcbh is not null begin
select @kcxz=课程性质 from 课程
select @zc=职称 from 教师 where 教师编号 in
(select 责任教师 from 课程 where 课程性质='专业基础') if @zc!='教授' or @zc!='副教授' begin
raiserror('该专业基础课的教师不是教师或副教授!',15,10) rollback transaction end End
insert into 课程 values('09','TCP协议','2','8','专业基础')
更新触发器:
create trigger kc_trigger4 on 课程 for update as
declare @zc char(10),@zrjs char(10),@kcbh char(10),@kcxz char(10) select @kcbh=课程编号,@zrjs=责任教师 from inserted if @kcbh is not null begin
select @kcxz=课程性质 from 课程
select @zc=职称 from 教师 where 教师编号 in
(select 责任教师 from 课程 where 课程性质='专业基础') if @zc!='教授' or @zc!='副教授' begin
raiserror('该专业基础课的教师不是教师或副教授!',16,10) rollback transaction end End
update 课程 set 课程性质= '专业基础' where 责任教师='4'
三、实验分析与小结:
(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析; 有待优化思路)
1、实验过程中的问题分析、产生的原因以及解决方法。 2、实验结果分析; 有待优化思路。
由于check约束只能引用定义了列级或表级约束的列,表间的任何约束都必须通过定义触发器来实现。在进行触发器的插入和更新操作的时候,其实可以两个放在一起执行,但想让自己在执行和修改程序时的方便,便分开来写。
四、其它
思考题:
1.为什么要使用触发器? 2.触发器和游标的异同之处? 答:
1、触发器是一种程序或是一种过程,它是事先设计好存储在数据库中的,是在某个特定条件发生时自动触发执行的,是提高数据库服务器性能的有力工具。 2、游标类似一个RecordSet,可以在SQL语句中依次遍历某个select的结果集的每行记录每个字段。触发器用来进行一些自动的数据库维护,比如在某张表发生变化的时候,自动在另外一个表里做上记录。
得分(百分制)
正在阅读:
数据库实验八:触发器及应用03-12
贵州2016年下半年一级建筑师《建筑结构》:建筑物抗震设防类别考03-26
考点19 化学实验基础06-08
三年级作文木头人游戏作文400字06-20
2017年《普通高中历史课程标准》解读03-29
怎样制作望远镜(法语)二十一08-06
中国光纤光缆行业市场调研与发展商机研究报告(2014-2019)10-03
2012-1研究生学位英语听力原文05-02
多媒体技术模拟卷(二)及答案12-01
我爱看书作文400字07-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 触发器
- 实验
- 数据库
- 应用
- 信息技术学业水平考试练习
- 征地拆迁管理办法
- 配水巷施工规格及安全技术措施
- 反思的四个维度
- 幼儿园大班上学期语言教案详案点评《好消息坏消息》
- 环境应急资源调查指南(试行)
- 南极中心小学“阳光成长”心理健康教育活动方案
- 高考数学第一轮基础复习训练题10
- 论电子技术在汽车照明中的新应用
- 01GL-物资库房管理制度
- 食品委托加工协议书范本
- 2015年中考思想品德必背知识点(北师大版)
- 景区门票上涨的问题
- 苏教版六年级下册科学期末测试题 - 图文
- 以“Y理论”为主题 - 撰写一篇小论文 0
- 描写花卉的好词好句
- 参加固体废物污染防治与环境管理专题培训班总结
- 2018“京东杯”全国政府采购法律法规百题知识竞赛答案及分析
- 广播电视新闻媒体融合的实践和思考
- 2013-2018年中国传动带市场发展现状及行业投资前景深度研究报告