- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL Server 管理篇_触发器
SQL Server 2008
天津财经大学
吕青普LQP039@163.com
2017-3-29
QQ:337664634
触发器
触发器实际上时一种特殊类型的存储过程,他是在执行某些特定的T-SQL语句是自动执行的一种存储过程。
SQL2008可以用约束(Check)和触发器来保证数据的有效性和完整性。约束可以做的动作很有限。触发器是特殊的存储过程,当其针对的表发生了Insert、Update、或Delete操作时会自动执行。在SQLServer2008还实现了当数据表(库)发生Create、Alter和Drop操作时,也会自动激活执行。
触发器
触发器的常用功能
完成比约束更复杂的数据约束
检查所做的SQL是否允许
修改其他数据表里的数据
调用更多的存储过程
发送SQL Mail、
返回自定义的错误信息
更改原本要操作的SQL语句
防止数据表结构更改或数据库表被删除
触发器
触发器的种类
DML触发器:是在数据库服务器中发生数据操作语言(Data Maniulation Language)事件是执行的存储过程。其又分为After触发器和Instead Of触发器
DDL触发器:是在响应数据定义语言(Data Definition Language)事件时执行的存储过程。一般用于执行数据库中的管理任务,例如审核和规范数据库操作、防止数据库表的机构被修改等。
触发器
DML触发器的分类
After触发器:记录改变之后才会被激活执行,主要用于记录变更后的处理或检查,一旦发现错误,也可以用Rollback Transaction语句来回滚本次操作
Instead Of触发器:一般用于取代原本的操作,在记录变更之前发生,它并不去执行原来SQL语句里的操作,而去执行触发器本身所定义的操作。
触发器
触发器的工作原理
在SQL Server2008里,为每个DML触发器都定义了2个特殊的表,插入表和删除表,它们建立在数据库服务器的内存中,是由系统管理的逻辑表,用户只能读取不能修改。这2表的结构与触发器所在的数据表的结构完全一致,当触发器的工作完成之后,这两个表也将从内存中删除。
插入表:存放的是更新前的记录。插入记录时存放插入的数据;更新记录时存放的是要更新的记录。
删除表:存放的是更新后的记录。更新记录时存放的是更新前的记录;删除记录时存放的是被删除的旧记录。
触发器
After触发器的工作原理
它是在记录变更之后才被激活执行的。以删除记录为例
Instead Of触发器的工作原理
After触发器是在Insert,Update和Delete执行之前就激活了,并且不在执行原来的SQL操作,而是去运行触发器本身的SQL语句。
触发器
DML触发器中不能使用的语句
Alter Database
CreateDatabase
Drop Database
Load Database
Load Log
Reconfigure
Restore Database
Restore Log
触发器
在对作为触发器的目标表或视图使用了那个下面的SQL语句时,不允许在DML触发器里再使用以下语句。
Create Index
Alter Index
Drop Index
DBCC Dbreindex
Alter Partition Fuction
Drop Table
Alter Table
触发器
如何使用触发器取得字段修改前和修改后的数据
触发器的动作 Inserted表 Deleted表
Insert 存放要插入的数据
Update 存放要更新的记录 存放更新前的旧记录
Delte 存放要删除的记录
If(select 库存数量 from Delted)0
Begin
Print ‘库存数量不为0时不允许删除’
Rollback transaction
End
触发器
注意事项:
After触发器只能用于数据表中,Instead Of触发器可以用于数据表和视图上,但两种触发器都不可以建立在临时表上
一个数据表可以有多个触发器,但是一个触发器只能对应一个表
在同一数据表中,对每个操作而言可以建立多个After触发器,但Instead Of触发器针对每个操作只能建立一个
如果针对某个操作既设置了After触发器又设置了Instead Of触发器,那么Instead Of触发器肯定会激活,但是After触发器不一定会激活
Truncate Table语句虽然行Delete语句那样可以删除记录,但是它不能激活Delete类型的触发器,因为Trunca
您可能关注的文档
最近下载
- 口腔粘膜病的病例汇报.pptx VIP
- 2023华为认证HCIE-Datacom H12-891新题库版-下(其它题部分).pdf VIP
- 医院信息系统建设可行性报告.doc
- 河北省石家庄二中实验学校2022-2023学年高一11月期中生物试题(解析版).docx
- 小学语文群文阅读教学讲座材料:问道群文阅读,创生多维课堂ppt课件.pptx VIP
- 曹冲称象 跨学科项目式学习设计方案.docx
- 必威体育精装版光伏发电PHC管桩施工方案.pdf
- 央视100集纪录片《中国通史》文字稿.docx
- 大学物理 II-(热学、振动和波、光学、量子)(北京交大)中国大学MOOC慕课 章节测验期末考试客观题答案.docx
- 《群文阅读的实施方法和策略》 课件.pptx VIP
文档评论(0)