- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
触 发 器 触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。 1 背 景 知 识 1.1 触发器的作用 触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。除此之外,触发器还有以下作用。 (1)触发器可以对数据库进行级联修改。 (2)实现比CHECK约束更为复杂的限制。 (3)比较数据修改前后的差别。 (4)强制表的修改要合乎业务规则。 1.2 Inserted表和Deleted表 SQL Server 2005为每个DML触发器都创建了两个专用临时表:Inserted表和Deleted表。这两个表的结构总是与被该触发器作用的表的结构相同,触发器执行完成后,与该触发器相关的这两个表也会被删除。 Inserted表存放由于执行INSERT或UPDATE语句而要向表中插入的所有行。 Deleted表存放由于执行DELETE或UPDATE语句而要从表中删除的所有行。 1.3 触发器的执行过程 DML触发器按照被激活的时机,可分为AFTER触发器和INSTEAD OF两种触发器。 2 DML触发器 DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作。DML事件包括对表或视图发出的UPDATE、INSERT或DELETE语句。 2.1 创建DML触发器 创建DML触发器的语法格式为: CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH ENCRYPTION ]—教验的作用 { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] }--接sql语句 其中各参数的含义如下。 (1)schema_name DML触发器所属架构的名称。 (2)trigger_name 触发器的名称。 (3)table|view 对其执行DML触发器的表或视图,有时称为触发器表或触发器视图。 (4)WITH ENCRYPTION 对CREATE TRIGGER语句的文本进行加密。 (5)AFTER 指定DML触发器仅在触发SQL语句中指定的所有操作都已成功执行时才被激发。 (6)INSTEAD OF 指定DML触发器用于“替代”引起触发器执行的T-SQL语句,因此其优先级高于触发语句的操作。 (7){ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } 指定激活触发器的数据修改语句。必须至少指定一个选项。在触发器定义中允许使用上述选项的任意顺序组合。 (8)NOT FOR REPLICATION 指示当复制代理修改涉及到触发器的表时,不应执行触发器。 (9)sql_statement 指定触发器所执行的T-SQL语句。 2.2 查看和修改DML触发器 1.查看触发器 2.修改DML触发器 2.3 使触发器无效或重新有效 1.使DML触发器无效 在有些情况下,用户希望暂停触发器的作用,但并不删除它,这时就可以通过DISABLE TRIGGER语句使触发器无效,语法格式如下: DISABLE TRIGGER { [ schema . ] trigger_name [ ,...n ] | ALL } ON object_name 其中各参数的含义如下。 (1)schema_name 触发器所属架构的名称。 (2)trigger_name 要禁用的触发器的名称。 (3)ALL 指示禁用在ON子句作用域中定义的所有触发器。 (4)object_name 在其上创建DML触发器的表或视图的名称。 2.使DML触发器重新有效 要使DML触发器重新有效,可使用ENABLE TRIGGER语句,语法格式如下: ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON object_name 其中,参数含义
文档评论(0)