版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络数据库实训报告日期:2010年12月17日 班 级:09级计算机信息管理学号姓名指导老师实训地点成绩38庄维瀚罗小平教 A505实训项目名称 实训十 触发器的创建和使用一、实训目的和要求1、理解触发器的作用;2、了解触发器和一般存储过程的区别;3、掌握创建、修改及删除触发器的方法;4、理解触发器执行的过程。二、实训所需仪器、设备硬件:计算机软件:操作系统 Windows XP、SQL Server 2005三、实训内容(一)简单触发器的创建和使用1、在student数据库中t_course表创建一名为myt1的AFTER触发器,要求实现 以下功能:当插入一条记录后提示“已插入一条新记录”,
2、并验证此触发器。use student gocreate trigger mytl on t_course for insertasdeclare msg char(30) set msg=已插入一条新记录 print msg-验证 use studentgoinsert into t_coursec_number,c_name,hours,creditvalues (123456,语文,70,2) go囱消息已插入_ 一条新记录(1行受影响)2、在student数据库中t_course表创建一名为myt2的AFTER触发器,要求实现 以下功能:当删除一条记录后提示“已删除一条记录”,并验证此
3、触发器。use studentgocreate trigger myt2 on t_course for deleteasprint 已删除一条记录-验证 use studentgodelete from t_course where c_number =123456go_J消息已删除一条记录行受影响)3、在student数据库中t_course表创建一名为myt3的AFTER触发器,要求实现 以下功能:当修改一条记录后提示“已修改一条记录”,并验证此触发器。use studentgocreate trigger myt3on t_course for update asprint 已修改一条
4、记录-验证use studentgoupdate t_course set c_name =高等语文where c_number = 10010218go_J消息已修改一条记录(1行受影响)4、在student数据库中t_course表创建一名为myt4的INSTEAD OF触发器,要 求实现以下功能:当删除一条记录之前提示“不能删除此表的记录!”,并验 证此触发器,检查是否能删除此表的记录。USE STUDENTGOCREATE TRIGGER myt4ON T_COURSEINSTEAD OF DELETEASPRINT INSTEAD OF触发器开始执行PRINT 不能删除此表的记录!G
5、O-验证USE studentGODELETE FROM t_course WHERE c_number=10010218GO_J消息INSTEAD of触发器开始执行.不能删除此表的记录!(1行受最响)5、删除以上创建的所有触发器。USE STUDENTGOdrop trigger myt1,myt2,myt3,myt4GO隹消息命令已成功完成。(二)较复杂的触发器的创建和使用1、创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入 更新类型的触发器scoreCheck,当在score字段中插入或修改考试分数后,触 发该触发器,检查分数是否在0至100分之间。CREA
6、TE TRIGGER TR_ScoreCheckON T_SCOREFOR INSERT, UPDATEASIF UPDATE(SCORE)PRINT AFTER触发器开始执行BEGINDECLARE ScoreValue realSELECT ScoreValue=(SELECT SCORE FROM inserted)IF ScoreValue100 OR ScoreValue0PRINT 输入的分数有误,请确认输入的考试分数!END-验证TR_ScoreCheck触发器的功能USE studentGOPRINT 在t_score中插入记录时触发器执行结果:PRINT INSERT INT
7、O t_scoreVALUES(0554112,10010218,-35)INSERT INTO t_scoreVALUES(0554113,100102183,152)GOPRINT 在t_score中修改记录时触发器执行结果:PRINT UPDATE t_scoreSET score=115WHERE s_number = 0554112UPDATE t_scoreSET score=-65WHERE snumber=0554113_J消息在中插入记录时触发器执行结果:afterM发器开始执行.输入的分数有误,话确认输入的考试分数!(1行受影响)afterM发器开始执行.输入的分数有误,清
8、酶认输入的考试分数!(1行受影响)_在匕_与口口=已 中修改记录时触发器执行结果:afterM发器开始执行.输入的分数有误,话确认输入的考试分数!(1行受影响)afterM发器开始执行.输入的分数有误,话确认输人的考试分数!(1行受影响)2、创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入 更新类型的触发器scoreCheck2,当在score字段中插入或修改考试分数后, 触发该触发器,检查分数是否在0至100分之间,若不在,则不能插入或修 改,并给出提示。代码段如下:CREATE TRIGGER scoreCheck2 ON t_scoreFOR insert,
9、updateASdeclare ScoreValue as intselect ScoreValue =(select score from inserted)if ScoreValue 100beginrollback transactionprint 数据不正确不能修改end验证上面创建的触发器,检查当输入的分数不在0到100之间,能否保 存分数。此功能的实现是依赖代码段的黑体字标识的语句rollback transaction来实现的,其作用是回滚变动的数据。教材没有此语句。CREATE TRIGGER scoreCheck2 ON t_scoreFOR insert, updateAS
10、declare ScoreValue as intselect ScoreValue =(select score from inserted)if ScoreValue 100begin-回滚变动的数据rollback transactionprint 数据不正确不能修改end-验证USE studentGOPRINT 在t_score中插入记录时触发器执行结果:PRINT INSERT INTO t_scoreVALUES (0554114, 10010218, 35)INSERT INTO t_scoreVALUES (0554115, 100102183, 52)GOPRINT 在t_
11、score中修改记录时触发器执行结果:PRINT UPDATE t_scoreSET score=115WHERE s_number = 0554114UPDATE t_scoreSET score=-65WHERE s_number = 0554115危消息l在t.score中插入记录时触发器执行结果:(1行受最响)(1行受最响)_在中修改记录时触发器执行结果:数据不正确插入或修改_消息3609,缓期0状态1,第3行 事务在触发器中结束批处理已中止。3、根据教材第4章P68创建一个检查约束,实现上述2的功能。体会触发器与 检查约束功能上的相似之处(直接在控制台做)4、在student数据库中
12、t_course表创建一名为twofield的AFTER触发器,要求 实现以下功能:当在hours (学时)和credit(学分)字段插入或修改学时或学 分后,触发该触发器,检查学时是否是大于0小于200的整数,并且学分是 否是大于0小于10的实数,若不满足这两个条件,则不允许插入或修改,并 给出提示。CREATE TRIGGER twofield ON t_course FOR insert, update AS declare h as int, c as real select h =(select hours from inserted) select c =(select credi
13、t from inserted) if h2 0 0 or c10 begin rollback transaction print 数据不正确不能修改 end USE student INSERT INTO t_course c_number hours,creditVALUES(20095504,210,-35)5、根据教材第4章P68创建一个检查约束,实现上述4的功能。体会触发器与 检查约束功能上的相似之处(直接在控制台做)6、创建一个AFTER触发器,要求实现以下功能:在t_student表上创建一个删 除类型的触发器stu_delete,当在t_student表中删除某一条记录后,触
14、发该触 发器,在t_score表中删除与此学号对应的记录。CREATE TRIGGER TR_Stu_Delete ON T_STUDENT FOR DELETE AS PRINT 删除触发器开始执行. DECLARE StuNum char(10) PRINT 把在T_STUDENT表中删除的记录的S_NUMBER赋值给局部变量StuNum。 SELECT StuNum S_NUMBER FROM deleted PRINT 开始查找并删除T_SCORE表中的相关记录. DELETE FROM T_SCORE WHERE S_NUMBER=StuNum PRINT 删除了 T_SCORE表中
15、的学号为 + RTRIM StuNum) + 的记录。 -验证Stu_Delete触发器的功能 USE student GO PRINT 在t_score中插入记录时触发器执行结果: PRINT DELETE FROM t_student WHERE s_number =0554112 DELETE FROM tstudent WHERE snumber=0554113GO7、分析能用外键约束实现上述6的功能吗?由此体会触发器与外键约束的不同 之外处。是可以实现的。8、创建一个INSERT触发器,完成的功能是当在t_score表中插入或修改s_number列的数据时,检测t_student表中
16、是否存在相应的s_number值,如果不存在, 则不允许插入和修改,并给出相应的提示信息。CREATE TRIGGER newt ON t_score FOR INSERT AS declare t as char(10) select t =(select s_number from inserted if t in (select s_number from t_student print 已插入 else begin rollback transaction print 学生信息表中不存在该学号,所以不能插入 end-验证USE studentGOPRINT 在t_score中插入记录时
17、触发器执行结果: PRINT INSERT INTO t_scoreVALUES (0554150, 10010218,-35) GO_J消息t_score 中插入记录时触发器执行结果:学生信息表中不存在该学号,所以不能插人 消息360%吸别16,状态第3行 事务在触发器中结束。批处理已中止。四、实训步骤(内容说明:1.大致的操作步骤;源代码,要标注题号)答:1、大致的步骤:【打开数据库】一【打开student】-【打开表】-【在需要的表上创建触发器】一【新建触发器】一【输入代码】一【验证】2、源代码附在题日的后面了。五、总结与分析(内容说明:1.对此次实训原理的归纳;对此次实训过程中出现问题
18、的分析及解决办法;此次实训的收获或体会等)答:1、此次实训原理的归纳:(1)理解触发器的作用;(2)了解触发器和一般存储过程的区别;(3)掌握创建、修改及删除触发器的方法;(4)理解触发器执行的过程。2、此次实训过程中出现问题的分析及解决办法:没有注意到外键约束,刚开始没有删掉,导致后面出现问题。3、此次实训的收获或体会:对于这次刚刚学习到的知识,这些只是熟悉罢了,还有待自己虚心向学,遇到的 问题还需认真的去解读,牢牢地记住。六、思考题1、简述触发器与存储过程的区别。答:一般的存储过程由用户根据需要通过存储过程名称被调用调用的,而触发器 主要是通过事件(执行INSERT、UPDATE或DELETE语句)进行触发而自 动执行的。存储过程不依赖于某个表而单独存在,而触发器必须基于一个表或视图创建。2、简述触发器的作用。答:(1)、触发器是自动执行的。(2)、触发器可以通过数据库中的相关表进行层叠更改。(3)、触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同,触发器可以引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度庞寒离婚协议书:情感纠葛与财产分配协议4篇
- 二零二五版户外用品销售代理及品牌合作合同2篇
- 2025年度幕墙施工劳务分包合同施工资料管理与归档范本4篇
- 临时场地租赁协议2024版3篇
- 二零二五年度农家乐餐饮承包合作协议3篇
- 二零二五年度年薪制员工聘用合同书:行业特定版
- 二零二五年度居民供水用水节能减排合同范本3篇
- 2025年度生物制药研发人员聘用劳动合同范本3篇
- 2025年度个人小户型房产买卖合同附带房产过户手续指导3篇
- 2025年食品生产HACCP体系审核与认证协议2篇
- 大疆80分钟在线测评题
- 2023年成都市青白江区村(社区)“两委”后备人才考试真题
- 2024中考复习必背初中英语单词词汇表(苏教译林版)
- 海员的营养-1315医学营养霍建颖等讲解
- 《现代根管治疗术》课件
- 肩袖损伤的护理查房课件
- 2023届北京市顺义区高三二模数学试卷
- 公司差旅费报销单
- 我国全科医生培训模式
- 2021年上海市杨浦区初三一模语文试卷及参考答案(精校word打印版)
- 八年级上册英语完形填空、阅读理解100题含参考答案
评论
0/150
提交评论