已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章触发器 6 1概述6 2创建和使用DML触发器6 3创建和使用DDL触发器6 4管理触发器 6 1概述 触发器是一种特殊类型的存储过程它不能被显式地调用 而是当表中插入 更改或者删除记录时 触发器被自动触发执行用触发器可以实施更为复杂的数据完整性约束触发器是在特定表上进行定义的SQLServer2005包括两大类触发器 1 DML触发器在数据库中发生DML事件时将启用DML事件包括在指定表或视图中修改数据的INSERT语句 UPDATE语句或DELETE语句 2 DDL触发器是SQLServer2005的新增功能 当服务器或数据库中发生DDL事件时将调用这些触发器CREATE ALTER DROP 触发器和存储过程的区别存储过程是在数据库上定义的 而触发器是在特定表上进行定义的存储过程可以由用户直接调用执行 但触发器不能直接调用执行 而是SQLSERVER自动触发执行的存储过程根据需要可以带有输入输出参数 触发器不允许带参数 触发器的作用触发器可以对数据进行级联修改触发器可以完成比CHECK约束更为复杂的限制触发器可以发现改变前后表中数据的不同 并根据这些不同来进行相应的操作 6 2创建和使用DML触发器 当创建一个触发器时必须指定如下选项 1 名称 2 在其上定义触发器的表 3 触发器将何时激发 分为 FOR AFTER INSTEADOF触发器 4 激活触发器的数据修改语句有效选项为INSERT UPDATE或DELETE 5 执行触发操作的编程语句 例 CREATETRIGGERtrig stuONStudentsAFTERINSERT DELETE UPDATEASSELECT FROMstudents 创建DML触发器的语法 CREATETRIGGER触发器名称ON表或视图 WITHENCRYPTION 加密 FOR AFTER INSTEADOF 触发器的类型 INSERT UPDATE DELETE ASSQL语句 一条或若干条SQL语句 在触发器中常用的两个IF子句 IFUPDATE 列名 如果在指定的列上进行了INSERT或UPDATE操作 则为真 IF COLUMNS UPDATED 位运算符 位屏蔽码 用于测试插入或更新了表中的哪些列 若某列被插入或更新 则对应位为1 否则为0 最右边的位表示表中的第一列 Inserted表和deleted表 触发器在执行时 会产生两个临时表 inserted表和deleted表 结构上和触发器表的结构相同 自动创建和管理 临时驻留内存 测试数据修改的效果及设置触发器操作的条件执行INSERT操作时 新行被插入到inserted表中执行DELETE操作时 被删除的行被插入到deleted表中执行UPDATE操作时 先删除的旧行被插入deleted表 再插入的新行被插入到inserted表中 例 CREATETRIGGERtrig stuONStudentsAFTERINSERT DELETE UPDATEASSELECT FROMinsertedSELECT FROMdeleted INSERTStudentsVALUES temp temp 男 1900 1 1 1001 DELETEStudentsWHEREStudentID temp2 UPDATEStudentsSETbirthday 1991 1 1 WHEREstudentID temp2 DML触发器的应用 CREATETRIGGERtrig StuNameInsONStudentsFORINSERTASBEGINDECLARE xmnvarchar 30 SELECT xm inserted studentNameFROMinsertedIfEXISTS SELECTstudentNameFROMStudentsWHEREstudentName xm BEGINRAISERROR 姓名不能重复 16 1 ROLLBACKENDEND 例 为SC表创建UPDATE触发器 当修改某个学生的成绩时 修改该学生在STUDENTS表中的平均成绩 CREATETRIGGERTRI SC UPDATEONSCAFTERUPDATEASIF COLUMNS UPDATED 4 0UPDATESTUDENTSSETavgGrade SELECTAVG grade FROMSCWHEREStudentID STUDENTS StudentID FROMSTUDENTS INSERTEDWHEREINSERTED StudentID STUDENTS StudentID INSTEADOF触发器 执行INSTEADOF触发器是为了替换那些初始化触发器的修改语句一个表或视图上只能创建一个INSTEADOF触发器 但可以创建多个AFTER触发器 例 CREATETRIGGERtrig 1ONStudentsINSTEADOFINSERT DELETE UPDATEASBEGINSELECT FROMstudentsSELECT FROMinsertedEND 当添加一行时 新添的行被插入到inserted中 但是并没有插入到Students表中 6 3创建和应用DDL触发器 DDL触发器响应DDL语句 CREATE ALTER和DROP 而激发 可用于管理任务 例如审核和控制数据库操作 DDL触发器一般用于以下目的 1 防止对数据库架构进行某些更改 2 希望数据库中发生某种情况以响应数据库架构中的更改 3 要记录数据库架构中的更改或事件 仅在运行触发DDL触发器的DDL语句后 才会激发 无法作为INSTEADOF触发器使用 语法 CREATETRIGGER触发器名称 FOR AFTER 事件或事件组 n 如DROP TABLE ALTER TABLE CREATE TABLE事件 ASSQL语句 例 CREATETRIGGERtrig SafeStuONDATABASEFORDROP TABLE ALTER TABLEASBEGINPRINT 不能修改表结构 ROLLBACKEND 6 4管理触发器 查看系统存储过程触发器名称Sp help 提供触发器名称 创建日期等sp helptex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力管理考试试卷及答案
- 2025年基本公共卫生慢性病管理培训测试题及答案
- 2025年电工证理论考试试卷及答案
- 2025年教师资格证小学《教育教学知识与能力》考试真题及答案
- Vildagliptin-impurity-1-生命科学试剂-MCE
- (2025年)《安全风险分级管控与隐患排查治理》培训考试试题(附答案)
- 2025年宠物智能喂食器技术瓶颈报告
- 2025年宠物智能喂食器产品安全评估报告
- 华医试题库及答案2025年
- 2025年金融会计网上试题及答案
- 美容手术分级管理制度
- 长护险考试试题及答案
- 房屋安全培训课件
- 2024-2025学年高二下学期《学会避让行驶中的车辆》主题班会课件
- T/ZJSEE 0015-2023架空线路复合绝缘子无人机红外检测导则
- 国有林场合作协议书
- 长江生态环境的恢复与保护 - 课件
- 招标代理廉政合同协议书
- 2025年四川申论执法卷真题及答案
- 2025年浙江国企宁波前湾控股集团及下属子公司招聘笔试参考题库含答案解析
- 肄业合作合同协议
评论
0/150
提交评论