![第15章触发器_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/fd88fec7-655b-432f-980d-e8ea2d9c07a8/fd88fec7-655b-432f-980d-e8ea2d9c07a81.gif)
![第15章触发器_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/fd88fec7-655b-432f-980d-e8ea2d9c07a8/fd88fec7-655b-432f-980d-e8ea2d9c07a82.gif)
![第15章触发器_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/8/fd88fec7-655b-432f-980d-e8ea2d9c07a8/fd88fec7-655b-432f-980d-e8ea2d9c07a83.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第15章 触发器教学目标理觡DmL触发器? DDL触珑器米型的特点和作用理解和掌揩 DML 触发器的管理技术琇解和掌握 TD? 触发器管理技术 教学难点和重点理解DML触发器和DDL详发器类型的特点和作用,这是学习触发 ?技枯犄基础。理解和掌握2 ML触发器的管理技术, 軙是最常?用的触发器技术。理解劌掌捡 D? L触发器管璆技术,这是 实现枉攈管理数据库操作的重要技术。摙学过程概述管理 DML 跦发器管理DDL触发噠上机实麌禂述案例 :如朜我把一盆水浇到一个彦生头上 ,他会有什么反应 ?一般认为,触?周是一种特殊类型的存储过程,它包含了大量的 Transact-SQL语句。但是触发器 又与存
2、储过程不同,例如,存储过程可以由用户直接调用执行,但是触发器不能被直接调用执 行,它只能自动执行。按照触发事件的不同,可以把 Microsoft SQL Server 2005 系统提供的触发器分成两大类型,即DML 触发器和 DDL 触发器。DDL:create alter dropDML:insert update delete 触发器的功能( 1)强化约束( Enforce restriction )触发器可以侦测数据库内的操作, 从而不允许数据库中未经许可的更新和变化。( 2)级联运行( Cascaded Operation ) 触发器可以侦测数据库内的操作, 并自动地级 联影响整个数
3、据库的各项内容。 例如,某个表 上的触发器包含对另外一个表的数据操作 (如 删除、更新、插入) ,而该操作又导致该表上 的触发器被触发。( 3)存储过程的调用(Stored ProcedureInvocation )为了响应数据库更新,触发器可 以调用一个或多个存储过程, 甚至可以通过外 部过程的调用而在 DBMS 之外进行操作。15.2 管理DML触发器DML 触发器的类型按照触发器事件类型的不同, 可以把 MicrosoftSQL Server 2005系统提供的DML触发器分成 3种类型,即INSERT类型、UPDATE类型和DELETE类型。这也是DML触发器的基本类 型。按照触发器和
4、触发事件的操作时间划分,可以把DML触发器分为ALTER触发器和INSTEADOF触发器功能AFTER械&髀NSTEADO1 讷"畠丨id用对魏y m表鞫视團U有很多相似之处。可以使用; !事凸 C-ill)!"3*TRIGGER语句创建DML触发器。在CREA1E . .-TRIGGER语句中,指定了定义触发器的基表.- 1-.-cF.r I 十 I'. "-*-.I或基视图、触发事件的类型和触发的时间、触!建D建发器f ppi 寸屯IpI ni mJS hB-aA : Qu卡殊;当向表中插入数据时, INSERT 触发器触发执 行。当 INSE
5、RT 触发器触发时,新的记录增加到触发器表中和inserted表中。该inserted表是 一个逻辑表, 保存了所插入记录的拷贝, 允许 用户参考 INSERT 语句中的数据。触发器可以 检查in serted表,来确定该触发器的操作是否 应该执行和如何执行。在inserted表中的那些 记录,是触发器表中一行或多行记录的冗余。inserted deleted insert 插入新数据的 备份 delete 删除老数据的备份update 修改后的备份 修改前的备份一个 DML 触发器示例 为了更加完整地掌握开发触发器的步骤和技 术,本节通过一个具体示例,全面讲述使用Tran sact-SQL语
6、言开发和创建触发器的技术。一般地,开发触发器的过程包括用户需求分 析、确定触发器的逻辑结构、 编写触发器代码 和测试触发器。语法:create trigger 触发器名称 on 表名 |视图 with enctrytpin for|after|instead of insert|update|delete asif update (列名 ) or update( 列名 ) sql 语句【例】插入一个学生信息, 同时更新此班级的 班级人数create trigger clsnum on studentafter insertasdeclare clsno char ( 10)select cls
7、no =clsnofrom inserted update classset numbers = numbers +1where clsno = clsno【例】当 tcc 表 ?入一行旰据时,将枬班学 生的选课忡息插入到 s?ore 表渭 *?create(trigge? trion tccafter ?inse?tas$ecla?e a char(10),b char(10)beginsele ?u?a=cL? o ,pb= cn ? fr?m hnsert ?d耠 rint 聡insertpri?t 耠 ?-? to!scope(sno,cno 耩 select sno,bfro? st
8、udent?h?re clsno= 聀 aend【例】提高教师工资, 新工资要比原工资要高, 否则给出错误提示。 ? alter table ? e!cher add salary money? selegt * ?rom teacheb? pda|e te ?chersut qa ? ary= 耱 000?lter trig? a? upda4e_salon teachubifter updateasfromdeclare ? old mon ?y,new moneyselect old=salary brom deleted? select newinsertedprint oldprin
9、t newif new < old beginprint ' 数据有误 'rollback endupdate teacher set salary =200 where tno = 'wd001' 【例】如果用户要修改教师的授课日期,禁止此操作,并进行提示。 create trigger upd_date on tcc instead of update as if update ( date )print ' 数据不能修改 '测试: update tcc set date =getdate () where id =2 select *
10、 from tcc【例】级联操作。删除学生信息,同时删除学生的选课信息。15.3 管理 DDL 触发器DDL 触发器与 DML 触发器有许多类似的地 方,例如可以自动触发完成相应的操作、 都可 以使用 CREATE TRIGGER 语句创建等, 但是 也有一些不同的地方。例如, DDL 触发器的 触发事件主要是 CREATE 、 ALTER 、DROP 以及 GRANT 、DENY 、REVOKE 等语句,并 且 触 发 的 时 间 条 件 只 有 AFTER , 没 有 INSTEAD OF 。【例】在数据库中创建触发器, 防止视图的删 除create trigger not_del_vie
11、won databasefor drop_viewasprint ' 不能删除数据库中的视图 ' rollbackdrop view v_t【例】创建触发器, 防止删除此服务器中的数 据库。alter trigger not_delete_databae on all serverfor drop_databasewith enctryptionasprint ' 不能删除数据库 'rollbackdrop database pubs修改触发器create trigger clsnum on studentafter insert asdeclare clsno
12、 char ( 10) select clsno =clsno from insertedupdate classset numbers= numbers +1where clsno = clsno查看触发器 Sp_helptrigger - 查看 student表名 ' 上的所有触发器sp_helptrigger- 查看 studentstudent表上所有 update 触发器sp_helptrigger student , 'update' 禁 用触发器sp_helptext 触发器名- 查看触发器定义sp_helptext 禁用触发器 alter table e
13、nable|disable'del_stu_cas'触发器表名 trigger all|触发器名- 禁用某个触发器 alter table student disable trigger del_stu_cas - 禁用所有触发器 alter table student disable trigger all- 启动某个触发器 alter table student enable trigger del_stu_cas- 启用所有触发器 alter table student enable trigger all 删除触发器Drop trigger 触发器名Drop trigger not_delete_database15.4 上机实验练习创建 DML 触发器 练习创建 DDL 触发器 针对 ATM 数据库,完成如下操作 如果用户要修改 transact 的 tdate( 交易日 期 ) ,通过替代触发器进行提示不能修改。 某用户销户(删除帐户信息) ,编写触发器, 同时删除此帐户的交易信息。 用户如要删除交易表信息 ( transact ),为安全 起见, 进行备份。 将删除信息备份到一个新表 beifen 中。(提示:删除 transact 行时,判断 表 beifen 是否存在,如果不存在进行创建后 在插入;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年一体化全自动反渗透装置项目可行性研究报告
- 医疗咨询服务用户行为分析-深度研究
- 2025至2031年中国电动潜孔钻行业投资前景及策略咨询研究报告
- 数字签名标准化进程-深度研究
- 2025年简易浴缸项目可行性研究报告
- 2025年气压式时序控制器项目可行性研究报告
- 2025年护卡膜片材项目可行性研究报告
- 2025年工艺手套项目可行性研究报告
- 2025年增养电解系统设备项目可行性研究报告
- 核桃施肥机具结构创新-深度研究
- 江苏省盐城市鹿鸣路初级中学2024-2025学年八年级上学期期末考试语文试题(含答案)
- 新苏教版一年级数学下册第六单元《简单的数量关系(一)》教案(共2课时)
- 社会儿童福利院项目可行性研究报告
- 脑卒中后吞咽障碍患者进食护理-2023中华护理学会团体标准
- 专题2-2十三种高考补充函数归类(讲练)
- 三年级英语上册整册书单词默写表学生版(外研版三起)
- 六年级数学上册100道口算题(全册完整版)
- 高三数学开学第一课
- 系统解剖学考试重点笔记
- 云南省地图含市县地图矢量分层地图行政区划市县概况ppt模板
- 暖通空调基础知识及识图课件
评论
0/150
提交评论