Sql Server系列:触发器

  触发器的一些常见用途:

  ◊ 强制参照完整性

  ◊ 常见审计跟踪(Audit Trails):这意味着写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据。

  ◊ 创建与CHECK约束类似的功能:与CHECK约束不同,这种功能可以跨表、跨数据库甚至是跨服务器使用。

  ◊ 用自己的语句代替用户的操作语句:常用于启动复杂视图的插入操作。

1. 触发器的概念

  触发器是一种特殊类型的存储过程,对特定事件作出响应。触发器有两种类型:数据定义语言触发器和数据操作语言触发器。

  数据定义语言(Data Definition Language,DDL)触发器在用户以某些方式(CERATE、ALTER、DROP)对数据库结构进行修改时激活而作出响应。在对数据库结构的改变或历史进行极为严格的审计时才会使用DDL触发器。

  数据操作语言(Data Manipulation Language,DML)触发器是一些附加在特定表或视图上的代码片段。与需要显示调用的存储过程不同,只要有附加触发器的事件在表中发生,触发器中的代码就好自动运行。实际上也不能显式调用触发器,唯一的做法是在指定的表中执行所需的操作。

  触发器的类型:

  ◊ INSERT触发器

  ◊ DELETE触发器

  ◊ UPDATE触发器

  ◊ 以上任意类型的混合

2. 创建触发器

  创建触发器语法:

CREATE TRIGGER [ schema_name . ]trigger_name 
ON { table | view } 
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF } 
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } 
[ WITH APPEND ]
[ NOT FOR REPLICATION ] 
AS { sql_statement  [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

<dml_trigger_option> ::=
    [ ENCRYPTION ]
    [ EXECUTE AS Clause ]

<method_specifier> ::= 
    assembly_name.class_name.method_name

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。