文档详情

第14章触发器.ppt.ppt

发布:2017-04-20约2.31千字共36页下载文档
文本预览下载声明
第14章 触 发 器; 触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。;14.1 背 景 知 识;(1)触发器可以对数据库进行级联修改。 (2)实现比CHECK约束更为复杂的限制。 (3)比较数据修改前后的差别。 (4)强制表的修改要合乎业务规则。;14.1.2 Inserted表和Deleted表; Inserted表存放由于执行INSERT或UPDATE语句而要向表中插入的所有行。 Deleted表存放由于执行DELETE或UPDATE语句而要从表中删除的所有行。 ;14.1.3 触发器的执行过程;14.2 DML触发器;14.2.1 创建DML触发器; 其中各参数的含义如下。 (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触发器;14.2.3 使触发器无效或重新有效; 其中各参数的含义如下。 (1)schema_name 触发器所属架构的名称。 (2)trigger_name 要禁用的触发器的名称。;(3)ALL 指示禁用在ON子句作用域中定义的所有触发器。 (4)object_name 在其上创建DML触发器的表或视图的名称。 ;2.使DML触发器重新有效;14.2.4 删除DML触发器; 删除触发器的语法格式如下: DROP TRIGGER ‘触发器名’ 也可以使用SQL Server Management Studio删除触发器。; 展开“对象资源管理器”中的服务器名,在“Databases”中找到触发器所在的数据库,展开“Tables”选项,选中触发器所在的表,如Goods表。; 在窗口的右侧,双击“Triggers”显示当前表上所建立的所有触发器,要删除哪一个触发器,就在该触发器上右击,在弹出的快捷菜单中选择“Delete”命令,出现“Delete Object”对话框。 在对话框中,单击“OK”命令按钮,即可删除指定的触发器。;14.3 DDL触发器; DDL触发器和DML触发器的用处不同。 DML触发器在INSERT、UPDATE和DELETE语句上操作,并且有助于在表或视图中修改数据时强制业务规则,扩展数据完整性。; DDL触发器在CREATE、ALTER、DROP和其他DDL语句上操作。它们用于执行管理任务,并强制影响数据库的业务规则。它们应用于数据库或服务器中某一类型的所有命令。 ;14.3.1 创建DDL触发器; 其中各参数的含义如下。 (1)trigger_name 触发器的名称。 (2)DATABASE 将DDL触发器的作用域应用于当前数据库。;(3)ALL SERVER 将DDL触发器的作用域应用于当前服务器。 (4)WITH ENCRYPTION 对CREATE TRIGGER语句的文本进行加密。;(5)event_type 执行之后将导致激发DDL触发器的Transact-SQL语言事件的名称。 (6)event_group 预定义的Transact-SQL语言事件分组的名称。 (7)sql_statement 指定
显示全部
相似文档