- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章 触发器
第16章 触发器 前面在介绍数据完整性时,提到SQL Server 2008提供了约束、默认值,以及触发器3类对象,用于保证数据的完整性,那时笔者只介绍了约束和默认值,本章主要介绍触发器(Trigger)。其实,触发器就是一类特殊的存储过程。触发器在创建后,一般是在数据库事件的驱动下自动执行的,即当SQL Server中某一个事件发生时,SQL Server将自动执行其相关联的触发器。 16.1 触发器概述 前面介绍的存储过程都是需要手工执行的,即在SQL语句中,用EXECUTE语句执行相应的存储过程;而触发器这类存储过程却由SQL Server自动执行。SQL Server之所以能够自动执行触发器,是因为触发器在创建时,与特定的SQL Server事件相关联。 16.2 登录触发器 登录触发器关联的事件是事件组SecurityAudit的事件AuditLogin,即LOGIN事件。如果用户遗忘了事件或事件组的概念,可以参考前面介绍SQL Server Profiler跟踪的内容。登录触发器是一种AFTER触发器,不过,登录触发器不存在于特定的架构之下。 16.2.1 登录触发器的执行时机和作用 登录触发器的执行时机是用户登录到SQL Server,具体的是在登录过程的身份验证结束之后至建立会话之前。显然,如果身份验证失败,将不激发登录触发器,所以触发器不能检测到用户对于登录的尝试,以及失败的次数。不过,用户可以通过SQL Server的日志了解到这些信息。 16.2.2 SQL登录触发器 所谓SQL登录触发器,是指用普通的SQL语句编写的登录触发器,主要是区别使用CLR编写的登录触发器。如果想要在登录触发器中使用登录事件的信息,可以参看后面DDL中介绍的EVENTDATA函数。 1.创建SQL登录触发器 2.使用登录触发器 3.更改登录触发器 4.删除登录触发器 16.2.3 登录触发器的常见错误 用户按照上面的SQL语句创建登录触发器,当然不会产生问题,但是,如果用户自己创建登录触发器时,需要慎重。因为创建登录触发器与创建普通的表、视图、存储过程或函数相比,具有一定的风险。 16.3 DDL 触发器 在SQL Server 2008中,CREATE、ALTER、DROP等语句常被称为数据定义语句,或数据定义语言(Data Definition Language,DDL)。DDL触发器就是与DDL相关联的一种特殊的存储过程。其实,DDL触发器是关联DLL语句对应的SQL Server事件。这类操作被关联相应的DDL触发器后,再执行这类操作时,SQL Server将会自动执行相关联的DDL触发器。DDL触发器是一种AFTER触发器,不存在于特定的架构之下,而存在于特定数据库中或整个SQL Server实例中。 16.3.1 DDL触发器的执行时机和作用 DLL触发器的执行时机是其关联的操作结束以后至下一个操作开始之前。所以,DDL触发器可以帮助用户管理和控制一些与数据库对象定义有关的操作,如管理和记录数据库对象结构的更改。总地来说,DDL触发器主要用在以下几方面。 处理对数据库对象结构的更改。 在数据库对象的结构发生更改后,执行处罚期内定义的操作。 可以记录数据库对象结构的具体更改,以及相应的SQL Server事件。 16.3.2 DLL触发器关联的事件组 DLL触发器关联的事件组依据其使用范围,分为服务器范围内的事件组和数据库范围内的事件组。可以通过SQL语句,查询当前SQL Server的事件组。 16.3.3 DLL触发器关联的事件 在SQL Server中,与DLL触发器关联的事件都属于预定义的事件组。下面将给出这些事件的详细信息,包括事件的名称、type,以及parent type。具体的,用户可以使用如下SQL语句查询到与DLL触发器关联的事件。 16.3.4 EVENTDATA函数:返回事件的XML结构 在编写DDL触发器时,可能需要获得服务器或数据库事件的信息。这时,就需要使用EVENTDATA函数,其语法结构如下。 返回值=EVENTDATA() 16.3.5 SQL DDL触发器 所谓SQL DDL触发器,是指用普通的SQL语句编写的DDL触发器,主要是区别于使用CLR编写的DDL触发器。 1.创建SQL DDL触发器 2.使用DDL触发器 3.更改DDL触发器 4.删除DDL触发器 5.查看DDL触发器的信息 16.4 DML触发器 在SQL Server 2008中,INSERT、UPDATE、DELETE等语句常被称为数据操纵语句,或数据操纵语言(Data Manipulation Language,DML)。DML触发器是与DML相关联的一种特殊的存储过程。当DML操作被
文档评论(0)