数据库实验八:触发器及应用_第1页
数据库实验八:触发器及应用_第2页
数据库实验八:触发器及应用_第3页
数据库实验八:触发器及应用_第4页
数据库实验八:触发器及应用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库实验八:触发器及应用一、实验目的与要求:1实验目的(1)学习触发器的使用,加深对触发器功能和作用的理解。(2)体会触发器执行的时机。2实验要求建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值): (1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。(2)为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。(3)自行再分别设计23个触发器(在实验报告中要准确描述功能需求)。(4)设计并执行相关的操作,体会DML触发器的效果和作用。二

2、、实验内容1、实验原理 建立触发器的语句是:CREATE TRIGGER schema_name.trigger-nameON table |viewFOR INSERT | UPDATE | DELETE ASIF UPDATE (column) AND | OR UPDATE (column)sql-statement2、实验步骤与结果 (1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。(2)输入自己编好的程序。(3)检查已输入的程序正确与否。(4)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同的数据时所得

3、到的结果是否正确。(5)输出程序清单和运行结果。(1)为选课表分别建立插入和更新触发器,如果当前学生累计不及格门数达到5则给出警示信息。插入触发器:create trigger xk_triggeron 选课for insert asdeclare amount int, xh char(10)select xh=学号 from insertedif xh is not nullbeginselect amount=(select count(*)from 选课 where 成绩=5beginraiserror(不及格达到5门,16,10)endendinsert into 选课 values

4、(001,03,50)insert into 选课 values(001,02,50)insert into 选课 values(001,04,50)更新触发器:create trigger xk_trigger2on 选课for updateasdeclare amount int, xh char(10)select xh=学号 from insertedif xh is not nullbeginselect amount=(select count(*)from 选课 where 成绩=5beginraiserror(不及格达到5门,16,10)endendupdate 选课 set

5、成绩=50 where 学号=001 and 课程编号=02update 选课 set 成绩=50 where 学号=001 and 课程编号=03update 选课 set 成绩=50 where 学号=001 and 课程编号=04update 选课 set 成绩=50 where 学号=001 and 课程编号=05update 选课 set 成绩=50 where 学号=001 and 课程编号=06(2) 为课程表分别建立插入和更新触发器来建立约束规则:“专业基础”课的教师必须为“教授”或“副教授”,如果不满足约束则拒绝操作,并给出错误信息。插入触发器:create trigger

6、kc_trigger3on 课程for insertasdeclare zc char(10),zrjs char(10),kcbh char(10),kcxz char(10)select kcbh=课程编号,zrjs=责任教师 from insertedif kcbh is not nullbeginselect kcxz=课程性质 from 课程select zc=职称 from 教师 where 教师编号 in(select 责任教师 from 课程 where 课程性质=专业基础)if zc!=教授 or zc!=副教授 beginraiserror(该专业基础课的教师不是教师或副教

7、授!,15,10)rollback transaction endEndinsert into 课程 values(09,TCP协议,2,8,专业基础)更新触发器:create trigger kc_trigger4on 课程for updateasdeclare zc char(10),zrjs char(10),kcbh char(10),kcxz char(10)select kcbh=课程编号,zrjs=责任教师 from insertedif kcbh is not nullbeginselect kcxz=课程性质 from 课程select zc=职称 from 教师 where

8、 教师编号 in(select 责任教师 from 课程 where 课程性质=专业基础)if zc!=教授 or zc!=副教授 beginraiserror(该专业基础课的教师不是教师或副教授!,16,10)rollback transaction endEndupdate 课程 set 课程性质= 专业基础 where 责任教师=4三、实验分析与小结:(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析; 有待优化思路)1、实验过程中的问题分析、产生的原因以及解决方法。2、实验结果分析; 有待优化思路。由于check约束只能引用定义了列级或表级约束的列,表间的任何约束都必须通过定义触发器来实现。在进行触发器的插入和更新操作的时候,其实可以两个放在一起执行,但想让自己在执行和修改程序时的方便,便分开来写。四、其它思考题:1为什么要使用触发器?2触发器和游标的异同之处?答:1、触发器是一种程序或是一种过程,它是事先设计好存储在数据库中的,是在某个特定条件发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论