文档详情

SQL Server 2005数据库技术与应用 教学课件 郭江峰 1_ 第14章 触 发器.pdf

发布:2015-11-09约4.89千字共36页下载文档
文本预览下载声明
第14章 触 发 器 14.1 背 景 知 识 14.2 DML触发器 14.3 DDL触发器 触发器是一种特殊的存储过程,它在 特定语言事件发生时自动执行,通常用于 实现强制业务规则和数据完整性。 14.1 背 景 知 识 14.1.1 触发器的作用 触发器的主要作用是实现由主键和外 键所不能保证的复杂的参照完整性和数据 一致性。除此之外,触发器还有以下作用。 (1)触发器可以对数据库进行级联修改。 (2 )实现比CHECK约束更为复杂的限制。 (3 )比较数据修改前后的差别。 (4 )强制表的修改要合乎业务规则。 14.1.2 Inserted表和Deleted表 SQL Server 2005为每个DML触发器 都创建了两个专用临时表:Inserted表和 Deleted表。这两个表的结构总是与被该触 发器作用的表的结构相同,触发器执行完 成后,与该触发器相关的这两个表也会被 删除。 Inserted表存放由于执行INSERT或 UPDATE语句而要向表中插入的所有行。 Deleted表存放由于执行DELETE或 UPDATE语句而要从表中删除的所有行。 14.1.3 触发器的执行过程 DML触发器按照被激活的时机,可分 为AFTER触发器和INSTEAD OF两种触发 器。 14.2 DML触发器 DML触发器是当数据库服务器中发生 数据操作语言(DML )事件时要执行的操 作。DML事件包括对表或视图发出的 UPDATE、INSERT或DELETE语句。 14.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 [ ; ] } 其中各参数的含义如下。 (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语句。 14.2.2 查看和修改DML触发器 1 .查看触发器 2 .修改DML 触发器 14.2.3 使触发器无效或重新有效 1 .使DML 触发器无效 在有些情况下,用户希望暂停触发器 的作用,但并不删除它,这时就可以通过 DISABLE TRIGGER语句使触
显示全部
相似文档