


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验七、触发器一、实验目的(1)理解触发器的用途、类型和工作原理。(2)掌握利用T-SQL语句创建和维护触发器的方法。(3)掌握利用 SQL Server Management Studio 创建、维护 触发器的方法。二、实验内容、1、创建AFTER触发器(1)创建一个在插入时触发的触发器 sc_insert当向SC表插入数 据时,须确保插入的学号已在 Student表中存在,并且还须确保插入 课程号在Course表中存在;若不存在,则给出相应的提示信息,并 取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课 程号不满足条件。(注:Student表与SC表的外键约束要先取消。)if
2、exists(select name from sysobjects where name='Lnsert1 注二d type= *TR*) drap trigger sc_±nserE50crea匸隹 trigger 3C_insercon scfor inser匸S3declare sro varchar < 10 cno varcrzar 10:select snc-sno,cnocnofrom INSERTEDif not exists( select snofrom studentwhere 3no=snokeginpr 口匸 L学号不存在! Jrollbac
3、k tranerd|ELSE PRINT r0K'else if nci匸 Qxz-Bt select enofrom coursewhere cno=cnobeginrcllbaclr tranpr 二 口匸 ,课程号不存在! 1endgo<|il匕消息命令已成功完咸.(2)为Course表创建一个触发器 Course_de,当删除了 Course表中的一条课程信息时,同时将表 SC中相应的学生选课记录也删除。if exists select Tiame from gysotojects where name='courjedelr and type='TR1
4、drop trigger course del9口create trigger courae delan acurefor DELETEasbegin transactiondeclare 3eno char 8select cne=cnofrarn DELETEDDELETEFROM scwhere cnQ=Scnocommit tran<75消息命令已咸功完成.(3)在Course表中添加一个平均成绩 avg_modify,当SC表中某学生的成绩发生变化时,则 Course表中的平均成绩也能及时相应发生改变。alter table courseadd avggrade int/*al
5、cer 匸able coursedrop columrL avg_grade*/if exists : select name from sy3objects where nazue = l grade_raodif y1 and type:=lTR.' drop 匸rigger grade_nio±Lfygocreate txiggex grade_iMdifyan scfor updateasdecla工皂 £avg int.7 cno char 2select ce口=eno P avg=avg(gradefrojn INSERTEDgroup by enoU
6、PDATE courseset. avg_grade=电avgwhere cno=cno(4)测试上述三个触发器insertinto scvalues('20110009',*001',90 |<S消息聲号ife息3509,级别1®状态S第丄行 事务在触发器中结束批处理已中止。insertinto scvalues(20110002 ,004,/90) select from sc;结果丨消息delete from Course where cno=,002'<bj消息(4行受影响)/ornxAniAAoldo. course nzo Sn
7、oCnoGrade0038920110001004NULL20110002003NULL201100020049020110003003872011000300475米NULLNULLNULLCnoCnameTotal_periorCreditrrtr3J°V|Java言程序设计0044VisuaiBasrcTO005英语644006数据库483NULLNULLNULLNULLJpda匸亡3Cser grade:S0 where cno = * " 33 'updare scset grade gradel wkere cno=11j4 *;1行受彫响)(3行受彫响
8、】警告:聚合或其他SZT操作巒了空值.(1行受彫响)3行受影响)1 _6。CnameTotaljjeriorCreditavg_grade鹿Jbm语言程序33Q004Viiual_Basic羽49000 S英语S4斗At£2006数据库433AUZNULLNLILNHLAUZMJLL2、创建INSERTED OF 触发器(1)创建一视图student_view包含学号、姓名、课程号、课程名、成绩等属性,在student_view上创建一个触发器grade_modify,当 对student_view中的学生的成绩进行修改时,实际修改的是SC中的 相应记录。if exists (sel
9、ect nwae from sysobjects where :name=1 student_view* 且nd typ§=lV*)DROP VIEW szudenxvlewgocreate view student viewassei皂匚芯 studen匸 snor sname. sc cnQ, cname. gradef r ain scf 匚口口工于皂* studentwhere sc-ano studentBsno and occurse.eno;if exists i select rma.已 from sysobjects wti皂工e: niame=1 grade_Ei
10、odify11 且nd typ皂=TR)drop trigger giraderaodifygocreate trigger grade_iRQdifyon student viewINSTEAD Of"uPDATEA5DECLARE grade intselect grade-gradefroin INSERTEDupdate 3tuden"t_viewset grade=grade;|(2)在Student表中插入一个getcredit字段(记录学生所获学分的 情况),创建一个触发器ins_credit当更改(注:含插入时)SC表 中的学生成绩时,如果新成绩大于等于 6
11、0分,则该生可获得这门课 的学分,如果新成绩小于60分,则该生未能获得这门课的学分。(3)测试上述两个触发器。update 5t«dent_view set grade-2?:SnoCnaGrade0033S2C1100010043320110002003sa20110002004as2C110003003as20110003004as米NULLAmNULL3、使用T-SQL语句管理和维护触发器(1)用系统存储过程sp_helptrigger查看触发器grade_modify的相关信息。EXEC sp heLptrigger r stden匸 view1;sG1菇果&消息tr
12、igger_nam&trigger_07kTFer isupdate isdslets isinserl isafter isinsteadof tngger_3chenna1i grade_nnciclifydbo10001dbo(2)使用sp_helptext查看触发器grade_modify中的定义内容。execlptexty型=ZZZ=ZZ二结果J消息Text1:create trigger grade _modify :2on stjderrt_view3INSTEAD OF UPDATE4AS5DECLARE grade intEselect grade=gradefrom
13、 INSERTED&update studentview9set gade=grade;(3)使用select语句查看触发器grade_modify的定义内容。SELECT 亠ETRCHr ByscoraraeDtsMEKE type - ' TR- azi«d naw" gratiE_iiod 1 f yp ;Mu1J1占朋dett-fiXttflMlanguagefincWBdccr*ipfssi»dLeMA010ftB)05B0050FQ073ffl)RQ053MKF 畑 WK5C05D0020 20a0iJPiMia昶呛 lMlQ-9|IM
14、R9|Q-9!lJ-9r)5D10血泊瞒XK桥畑0M006300詹畑 DO&KOSDOCEI.20打0ilPmsio詔时帕 lMD-9|lQ-?lD-9|0-9ia-9nSfli0Ch2m5SMM细 ElMWiTMKTKieKKffia&KHW 如20a0i Entrance _d aLe p | Brthll7百iDM3D0 7200650(胞 100”00650021»&140皿5004風)041005開.20a0errfe DEFMJLT Grade as UDiDk43®52im5fflM 畑540045002000;«106戏便5
15、0(771»200.2Da匚RETE vwn siLArs2 es selecl cno,cnHmeBcredtE.打1DDs43®52£Oi5DG41CO54 0045002 W56QM3CG150M7KI2CK.200匚REATE VIEWstuv»« 1 as sded Sno.Snamt Sec,.疋01RS3M721M£1MZfl0KaKL2WD7fflM9aK5OT77DO2M205ts wsfM stuvewl 35 sd«1 SC Sna D».Grade f11flnDEkSXKITOli 瞬 1
16、Q?74IX5Cia2W7«m9S0(l77CW2Qfl-0cnjt<e vwi shJv-eMiisns.wianitjSidi'i m sded a1211020护QCREATE JWK*加 stu_pr ¥9 A*"1 *4*亠!J 1U110卯 QQ650aQTO0720afM3Q065D2QQCWt«£mK4du 5hJ_p*UCl 刍:;:; V.(4)用系统存储过程sp_depends查看触发器grade_modify的相关 性(即该触发器涉及哪些基本表)。USE Stdent_info -指定数据库EXEC sp
17、depends 0objname =rade ncdLfy1;両结果區消息nametype updated selected column! i » in «1 dbo.5tudent_view view 仰nogradeRhaiaivmiBiBarainiaiamHiaiMiainraiaiBiiaif(5)将sc_insert触发器改为instead of触发器,实现的功能不变。if existsiselect name from sysabjects wnere nane = T sc_±3ert' ard typ已=,工罠, drop trigge
18、r sc_inserrgoon sgINSTEAD OF INSERTasdeclare Sane varchar(10 r cno varchar(10)select .sno ano. 3cno enofrem INSERTEDif net exis匸巴(select anofrein stndentwnere snQ=snoibeginprint 学号不存在|rollback tranend|(6)将触发器sc_insert删除DROP TRIGGER 3c_in3ert; |4、使用 SQL Server Management Studio 管理触发器(1)在SQL Server Management Studio中重新创建刚删除的触发器 sc_insertCREATE TRIGGER sc_insertON scINSTEAD OF INSERTAS3EGINdeclare ®sno varchai(10)fcno varchar(10select &sno=o=cnofrcin INSERTEDif ro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服装定制工厂合同范本
- 餐饮商业租房合同范本
- 半包合同范本首页
- 油田物资合同范本
- 基础钻孔开挖合同范本
- 恐龙展品租赁合同范本
- 社区应急知识培训课件图片
- 产品试用合同范本简约
- 草坪承包项目合同范本
- 外贸家具类合同范本
- 劳动仲裁员任职培训课件
- 2026创新设计高考总复习生物(人教版)-限时强化练答案解析
- 2025年人资部长面试题及答案
- 2025年中学生法治素养竞赛题库及答案
- 《语文八下第三单元复习课》课件
- 益阳市融资担保有限责任公司招聘考试真题2024
- 2025年山西省公务员考试行测试卷历年真题及答案详解(名校卷)
- 2025年消除艾滋病、梅毒、乙肝母婴传播培训考试试题(含答案)
- 新人教版五年级上册小学数学教学计划+教学进度表
- 痔疮的健康教育课件
- 优甲乐(左甲状腺素钠片)健康教育
评论
0/150
提交评论