目录
1.触发器工作原理
触发器的原理涉及两张虚拟的表,这两张虚拟的表分别是INSERTED表和DELETED表。
- INSERT操作的触发器。当增加数据时,会在数据表和INSERTED表中同时放入数据。利用INSERTED表,可以得到已经插入的数据;可以利用该数据库进行业务对比操作。
- DELETE操作的触发器。当从数据表中删除数据时,数据首先被放到DELETED表中。该表是一张存放了已经删除的数据的虚拟表。在触发器中可以调用该表中的数据。
- UPDATE操作的触发器。该类型触发器和其他两种不一样,当对触发器所在的表执行UPDATE语句时,原数据会被转移到DELETED表中,而修改后的数据则被插入到INSERTED表中。最后触发器检查这两个表的数据,并更新数据表。
2.触发器语法结构
CREATE TRIGGER (Transact-SQL)
(1)数据操纵语言(DMI)触发器语法。
CREATE [ OR ALTER ] 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
- CREATE TRIGGER项:表示创建触发器的关键词。
- schema_name项:表示触发器所属的架构名称。在SQL Server中触发器作用域是以架构为单位的。
- trigger项:触发器的名称。
- ON{ tablelview l项:触发器所作用的表或视图。DML类型触发器不能作用在局部或全局临时表上。
- FOR I AFTER项:AFTER表示触发器被激发的时机。它在SQL所有的操作都完成,并且约束检查完成后被激发。默认是AFTER。
- INSTEAD OF项:表示替换类型的触发器。对每个INSERT、UPDATE或DELETE语句只能定义一个INSTEAD OF触发器。
- 【INSERT】【UPDATE】【DELETE】项:激发触发器的操作,这里可以选取任意的组合。
- WITH APPEND项:指定添加一个已有类型的触发器。但如果显式声明了AFTER类型触发器,或触发器类型是INSTEAD OF时,则不能使用该项。
- NOT FOR REPLICATION项:当复制代理修改涉及触发器的表时,不应执行触发器。
- sql_statement项:可以足确定触发器具体操作的判断条件和操作。
- EXTERNAL NAME assembly_name.class_name.method_name[;]项:针对CLR触发器,指定程序集与触发器绑定的方法。
- ENCRYPTION项:表示对创建触发器语句进行模糊处理。
- EXECUTE AS项:指定用于执行该触发器的安全上下文。
(2)数据定义语言(DDL)触发器语法结构。
CREATE [ OR ALTER ] TRIGGER trigger_name
ON { ALL S

本文介绍了SQL SERVER中触发器的工作原理和语法结构,特别是DML触发器的创建过程。通过实例展示了如何创建一个用于记录数据变更的日志触发器,并通过INSERT和DELETE操作验证触发器的功能。
最低0.47元/天 解锁文章
2093

被折叠的 条评论
为什么被折叠?



