- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第08章存储过程和触发器分析
* * * * * * * * * * * 清华大学出版社. SQL Server 2005数据库应用与开发 (第2版) SQL Server 2005 数据库应用与开发 8.3 触发器概述 触发器(Trigger)是一种响应数据操作语言(DML)事件或数据定义语言(DDL)事件而执行的特殊类型的存储过程,是在用户对某一表中的数据进行UPDATE、INSERT和DELETE操作时被触发执行的一段程序。 触发器有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。 8.3 触发器概述 8.3.1 触发器的作用 触发器可以实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。 (1)触发器的主要作用。 触发器可以对数据库进行级联修改。 实现比CHECK约束更为复杂的限制。 强制表的修改要合乎业务规则。 8.3 触发器概述 8.3.1 触发器的作用 (2)使用触发器的优点。 触发器可通过数据库中的相关表实现级联更改。 触发器可以强制比用CHECK约束定义的约束更为复杂的约束。 触发器也可以监测数据修改前后的表状态,并根据其差异采取对策。 一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 8.3 触发器概述 8.3.2 触发器的分类 两种类型的触发器:DML触发器和DDL触发器。 1. DML触发器 DML触发器是在执行INSERT、UPDATE或DELETE语句时被激活的触发器。 DML触发器又分为AFTER和INSTEAD OF两种触发器: AFTER 触发器是在激活它的语句执行成功后才激活. INSTEAD OF触发器的激活将替代相应的触发语句。 当数据库中发生数据操作语言(DML)事件时将调用 DML 触发器。DML 触发器可以查询其他表,还可以包含复杂的 Transact-SQL 语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到错误,则整个事务即自动回滚。 8.3 触发器概述 8.3.2 触发器的分类。 1. DML触发器: DML 触发器通常用于以下场合: DML 触发器可通过数据库中的相关表实现级联更改。 DML 触发器可以防止恶意或错误的 INSERT、UPDATE 以及 DELETE 操作,并强制执行比 CHECK 约束定义的限制更为复杂的其他限制。 与 CHECK 约束不同,DML 触发器可引用其他表中的列。 DML 触发器可以评估数据修改前后表的状态,并根据该差异采取措施。 一个表中的多个同类DML触发器允许采取多个不同的操作来响应同一个修改语句。 8.3 触发器概述 8.3.2 触发器的分类。 2. DDL触发器 DDL触发器是在执行CREATE、ALTER和DROP语句时被激活的触发器,是由数据定义语言引起的。如果要执行以下操作,可以使用DDL触发器: 要防止对数据库架构进行某些更改。 希望数据库中发生某种情况以响应数据库架构中的更改。 要记录数据库架构中的更改或事件。 仅在运行触发 DDL 触发器的 DDL 语句后,DDL 触发器才会激发。DDL 触发器无法作为 INSTEAD OF 触发器使用。 8.3 触发器概述 8.3.3 触发器的工作原理 在触发器的执行过程中,SQL Server为每个触发器创建和管理两个特殊的表,一个是插入表inserted表,一个是删除表deleted表。这两个表建在数据库服务器的内存中,与触发器所在数据表的结构是完全一致。 当由INSERT或UPDATE语句激活相应触发器之后,所有被添加或被更新的记录都被存储到inserted表。当由DELETE或UPDATE语句激活相应触发器之后,所有被删除的记录都被送到deleted表。 在触发器的执行过程中,可以读取这两个表中的内容,但不能修改它们。当触发器的工作完成之后,这两个表也将从内存中删除。 8.3 触发器概述 8.3.4 创建触发器前应该注意的问题 在创建触发器前,需要注意以下一些问题: CREATE TRIGGER 语句必须是批处理中的第一个语句,而且只能用于一个表或视图。 创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。 触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。不应引用系统表,而应使用信息架构视图。 在含有用 DELETE或UPDATE操作定义的外键的表中,不能定义INSTEAD OF和 INSTEAD OF UPDATE触发器。 8.4 创建和管理触发器 8.4.1 创建触发器 创建触发器可以通过SQL Server Management Studio和CREAT
您可能关注的文档
最近下载
- 齿轮箱与联轴节试验台.pdf VIP
- 新解读《FZ_T 07027 - 2023绿色设计产品评价技术规范 儿童服装》最新解读.docx VIP
- PTC-中车长客PDM方案建议书20170609_Final.pptx VIP
- sfet7750700c动车组检修kwd联轴节扩压检查作业指导书.pdf VIP
- SFET-77-50500-C-动车组检修KWD联轴节退卸作业指导书-——【上海动车段三级修】.pdf VIP
- JJF(黑)13-2021加油机付油商品量检验规则.docx VIP
- 产品数据管理年终总结.pptx VIP
- 产品数据管理系统项目.pdf VIP
- CRH2A统型动车组三级修联轴节(KWD)组装作业指导书.pdf VIP
- 新时代好少年如何培养.pptx VIP
文档评论(0)