实验七触发器.pdf
《实验七触发器.pdf》由会员分享,可在线阅读,更多相关《实验七触发器.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验七、触发器 一、实验目的(1)理解触发器的用途、类型和工作原理。(2)掌握利用 T-SQL 语句创建和维护触发器的方法。(3)掌握利用 SQL Server Management Studio 创建、维护 触发器的方法。二、实验内容、1、创建 AFTER 触发器(1)创建一个在插入时触发的触发器 sc_insert,当向 SC 表插入数 据时,须确保插入的学号已在 Student 表中存在,并且还须确保插入 课程号在 Course 表中存在;若不存在,则给出相应的提示信息,并 取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课 程号不满足条件。(注:Student 表与 SC 表
2、的外键约束要先取消。)if exz_Bt3-.select name from Bysobjects where name=j_r.Bert1 注二d type-TR i drap trigger sc_nser 50 create trigger 3C_inserc an sc for insert S3 declare 0sro varchar 110 Jcno varcriar 10:select sno-sno,cnccno from INSERTED if not exists(select sno frorti student where 3no=snd fcegin p工二口七
3、1 学号不存在!T rollback tran erd|ELSE PRINT OR1 else if no匸 cixz-Bts select eno from course where cno=cno begin rcllb&ck tr&n p工二口七 课程号不存在!1 j end go J消息 命令已成功完戚.(2)为 Course 表创建一个触发器 Course_del,当删除了 Course 表 中的一条课程信息时,同时将表 SC 中相应的学生选课记录也删除。if exists(select name from 3ysobjsees where name-1course_del1 and
4、 typeTR1)drep trigger 匚口口rse_del go create trigger course_del on ccurse far DELETE AS tegin transec匸丄口口 declare ano char 8)select 茵匚口o=cno from DELETED DELETE FROM SC whe工己 cno=cno commit tr&n (3)在 Course 表中添加一个平均成绩 avg_modify,当 SC 表中某学 生的成绩发生变化时,则 Course 表中的平均成绩也能及时相应发生 改变。alter table course add av
5、ggrade int/*alcer 匸able course drop columrL avg_grade*/if exists:select name from sy3objects where nazue=l grade_raodif y1 and type:=lTR.drop 匸rigger grade_nioLfy go create txiggex grade_iMdify an sc for update as decla工皂 avg int.7 cno char 2 select CE口=eno P avg=avg(grade frojn INSERTED group by en
6、o UPDATE course set.avg_grade=电avg where cno=cno(4)测试上述三个触发器 insert into sc values(20110009,*001,90|S消息 聲号 ife息3509,级别1状态 S 第丄行 事务在触发器中结束批处理已中止。insert into sc values/,2O110Q02,rQ01,90 select _ from sc;口结果血消息 Snc Cno Grade j L,E-F,f,1 j2011DD01 001 39 2“面了伍亦D02 7S 3 2D11D001 D03 出 4 2011D001 DM NULL
7、5 20110002 001 NULL 20110002 002 60 7 20110002 003 NULL 6 20110002 004 W delete from Course where cna=1002*;_ HLEO 4LD Sno Cno Grade 卜 003 39 20110001 004 NULL 20110002 003 AUZ 20110002 004 90 20110003 003 37 20110003 004 75 MJ.NULL MULL Cname Total _peror Credit r-二幵士丑口*jRh 3*1丁筑语言程序设计 J:suaJtiaSC
8、斗 英语 64 斗 数据库 羽 3 NULL NULL MJLL Jpda匸亡3C ser grade:S0 where cno=*33;updare sc set grade gradel wkere cno=11J4*;匕消息:1行受彫响1(3行受彫响)警告:聚合或其他ST操作消除了空值”(L行受彫响)3行受影响)1 _ 6。Cname Totaljjerior Credit avg_grade 鹿 JBM语言程序 3 3Q 004 Viiual_Basic 羽 4 90 00 S 英语 S4 斗 At2 006 数据库 43 3 AUZ NULL NLIL NHL AUZ MJLL 2、
9、创建 INSERTED OF 触发器(1)创建一视图 student_view,包含学号、姓名、课程号、课程名、成绩等属性,在 student_view 上创建一个触发器 grade_modify,当 对student_view 中的学生的成绩进行修改时,实际修改的是 SC 中的 相应记录。if exists(select nwae from sysobjects where:name=1 student_view*且nd typ=lV*)DROP VIEW szudenxvlew go create view student view as sei皂匚芯 studen匸 snor sname
10、.sc cnQ,cname.grade f r ain scf 匚口口工于皂*student where sc-ano studentBsno and occurse.eno;if exists i select rma.已 from sysobjects wti皂工e:niame=1 grade_Eiodify11 且nd typ皂=TR)drop trigger giraderaodify go create trigger grade_iRQdify on student view INSTEAD OFUPDATE A5 DECLARE grade int select grade-gr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 触发器
限制150内