触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,通常用于强制业务规则,一种高级约束,可以定义比用CHECK 约束更为复杂的约束。

特点:

View Code
触发器定义在特定的表上,与表相关
自动触发执行
不能直接调用
是一个事务(可回滚)

触发器触发时:
系统自动在内存中创建deleted表或inserted表
只读,不允许修改;触发器执行完成后,自动删除
inserted 表 
临时保存了插入或更新后的记录行 
可以从inserted表中检查插入的数据是否满足业务需求
如果不满足,则向用户报告错误消息,并回滚插入操作
deleted 表
临时保存了删除或更新前的记录行 
可以从deleted表中检查被删除的数据是否满足业务需求
如果不满足,则向用户报告错误消息,并回滚插入操作

 

类型:

DELETE 触发器
INSERT 触发器
UPDATE 触发器

 语法:

CREATE TRIGGER 触发器名称
ON 
{ FOR|AFTER|INSTEAD ON}
{ [INSERT][,][DELETE][,][UPDATE]}
AS
  SQL 语句[.....n]
GO

更详细的语法结构

CREATE TRIGGER trigger_name 
ON { table | view } 
[ WITH ENCRYPTION ] 
{
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
        [ WITH APPEND ]
        [ NOT FOR REPLICATION ]
        AS
        [ { IF UPDATE ( column )
            [ { AND | OR } UPDATE ( column ) ]
                [ n ]
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                { comparison_operator } column_bitmask [ n ]
        } ] 
        sql_statement [ n ] 
    } 
} 

 

 Inserted 和 Deleted
 

实例:

 

 

posted on 2012-06-13 13:53  gzh4455  阅读(740)  评论(0编辑  收藏  举报