- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在本章中,你将学到:
实现触发器
触发器是一种特殊的存储过程
触发器不能在系统表上创建。
触发器不像存储过程,不能返回值或结果集
实现事务
维护数据的完整性
;触发器有以下类型:
DML 触发器
当关联表被DML影响的时候,触发
DDL 触发器
DDL影响的时候触发
DDL 触发器是 SQL Server 2005 的新增功能
用于管理任务
触发器的限制
CREATE TRIGGER 必须是批处理中的第一条语句,并且只能应用于一个表。
触发器只能在当前的数据库中创建
;DML触发器的特性
自动触发,在数据修改语句提交的时候
不能被显式调用或执行
防止错误、未授权和数据的不一致
不能返回数据给用户
可以嵌套到32层
示例:trgDeleteDepartment
;DML触发器的工作原理
SQL Server 2005 会自动创建和管理 两个表:Inserted表和Deleted表
驻留在内存中
用户不能修改
表的结构与触发器作用的表的结构相同
触发器工作??成以后,表删除
Inserted表:用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在插入或更新事务期间,新行将同时被添加到插入的表和触发器表。插入的表中的行是触发器表中的新行的副本。
Deleted表:用于存储 DELETE 和 UPDATE 语句所影响的行的副本。在执行 DELETE 或 UPDATE 语句的过程中,行从触发器表中删除,并传输到删除的表中。删除的表和触发器表通常没有相同的行。 ;INSERT操作时触发器的工作
插入数据时,insert触发器将被触发执行,新的记录被增加到触发器表和inserted表中
DELETE操作时触发器的工作
级联:主表删除,依赖表中也删除
限制:如果相关记录在依赖表中存在,限制从主表中删除
无效:主表中删除,在依赖表中的相关列中置为无效
UPDATE操作时触发器的工作
相当于插入一条新纪录和删除一条旧记录
表中原有的记录存放在deleted表中
修改后的记录存放在inserted表中;创建 DML 触发器时需指定:
名称。
定义触发器时所基于的表。
触发器被触发的时间。
激活触发器的数据修改语句。有效选项为 INSERT、UPDATE 或 DELETE。多个数据修改语句可激活同一个触发器。例如,触发器可由 INSERT 或 UPDATE 语句激活。
执行触发器操作的编程语句。;AFTER 触发器 :
在执行了 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器,只有在成功执行触发 SQL 语句之后,才会执行 AFTER 触发器
如果仅指定 FOR 关键字,则 AFTER 为默认值
AFTER 触发器只能在表上指定
可以为任何一个DML操作定义多个AFTER触发器
INSTEAD OF 触发器
当要执行DML操作时,用别的操作代替
不能为表或视图的DML操作创建多余一个的INSTEAD OF 触发器;嵌套触发器
一个触发器执行启动另一个触发器的操作
DML 触发器和 DDL 触发器最多可以嵌套 32 层
递归触发器
直接递归 :在触发器触发并执行一个导致同一个触发器再次触发的操作时,将发生此递归
间接递归 :触发器触发并执行一个触发同一个表或另一个表的另一个触发器的操作时,将发生此递归。第二个触发器执行一个再次触发第一个触发器的操作 ;课间思考;触发器:
使用CREATE TRIGGER语句来创建触发器
语法:
CREATE TRIGGER trigger_name
ON { OBJECT NAME }
{ FOR | AFTER | INSTEAD OF } { event_type [
,...n ] |
DDL_DATABASE_LEVEL_EVENTS }
{ AS
{ sql_statement [ ...n ] }
}
创建两个称为魔表的临时表
让我们看看如何…;;改变触发器:
语法:
ALTER TRIGGER trigger_name
{ FOR | AFTER } { event_type [ ,...n ] | DDL_DATABASE_LEVEL_EVENTS }
{ AS
{ sql_statement [ ...n ] }
}
删除触发器:
语法:
DROP TRIGGER { trigger }
让我们看看如何…;ALTER TRIGGER HumanResources.trgInsertShiftON HumanResources.ShiftFOR INSERTAS DECLARE @ModifiedDate d
您可能关注的文档
- 4G15S发动机和4G15M发动机区别.doc
- 4大气运动和全球性大气环流.ppt
- 4多频涡流检查技术研究.doc
- 4个简单技巧 让妆容干净精致.doc
- 4机械式转向系结构和工作原理.doc
- 4他励直流电动机运行.ppt
- 005发动机节气门位置传感器检测与诊断.ppt
- 05-C2-001防水套管和密闭套管安装技术交底.doc
- 5、车架和身高对比.doc
- 5.1 塑料制件在模具中位置.ppt
- 2023年黑龙江冰雪体育职业学院招聘笔试真题及完整答案详解1套.docx
- 2023年黑龙江农垦职业学院招聘笔试真题及答案详解一套.docx
- 2023年黑龙江冰雪体育职业学院招聘笔试真题带答案详解.docx
- 2023年黑龙江商业职业学院招聘笔试真题参考答案详解.docx
- 公司房租赁合同范例.docx
- 2023年黑龙江农垦职业学院招聘笔试真题及完整答案详解1套.docx
- 2023年黑龙江冰雪体育职业学院招聘笔试真题参考答案详解.docx
- 企业员工人力资源政策介绍-人力资源经理.pptx
- 2023年黑龙江农业职业技术学院招聘笔试真题及完整答案详解1套.docx
- 2023年黑龙江冰雪体育职业学院招聘笔试真题及参考答案详解.docx
文档评论(0)