触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,通常用于强制业务规则,一种高级约束,可以定义比用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
实例: