首页 > 代码库 > Sql Server系列:触发器

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

 

Sql Server系列:触发器