1.什么是触发器
触发器由Transact-SQL编写并存储在SQL Server服务器中。触发器由数据库的特定事件来触发,特定事件主要包括:
(1)用户在指定的表或视图做DML操作,主要包括如下几种:
- INSERT操作,在特定的表或视图中增加数据。
- UPDATE操作,对特定的表或视图修改数据。
- DELETE操作,删除特定表或视图的数据。
(2)用户做DDL操作,主要包括如下几种:
- CREATE操作,创建对象。
- ALTER操作,修改对象。
- DROP操作,删除对象。
(3)用户进行LOGON操作。
- 与SQL Server实例建立连接。
2.触发器的作用
- 利用触发器可以执行相对复杂的业务操作。增加、删除。修改数据是对表最基本的操作方式。这种操作方式只能完成固定的数据变动,而使用触发器则在完成数据变动的基础上做额外的操作,以达到完成特殊业务的目的。
- 可以防止无意义的数据操作。利用触发器可以对符合某些条件的数据加以保护,使其不能被随意改动。
- 用于级联操作数据。当一个表中的数据有变动时,可以利用触发器修改这些变动数据在其他表中的关联数据(正常情况下可以利用外键进行限制)。
- 保证数据的同步复制。
- 利用触发器可以跟踪对数据库的操作。在指定的表或视图中设置触发器,当记录被改变时,利用触发器把数据变动日志记录下来。
- 允许或限制修改某些表,利用触发器可以限制表的变动。
3.触发器分类
(1)DML触发器。这种类型的触发器可以称为数据操纵语言(DML)触发器。它作用在表或视图上,在对表或视图进行DML操作时会激发该类型的触发器,该类型触发器包括:
AFTER触发器,此类型触发器会在执行INSERT、UPDATE及DELETE操作后被激发并执行。它被激发的时机是在表或视图中的数据修改之后。
INSTEAD OF触发器,此类型的触发器会用触发器本身的操作替换原来的操作(INSERT,UPDATE,DELETE)。也就是说,当对该触发器作用对象进行DML操作 时,DML操作并不会被执行,而是被触发器中的操作所替换。它通常作用在视图上,利用该触发器可以使得视图变成可更新视图。
(2)DDL触发器。被称为数据定义语言(DDL)触发器。当CREATE,ALTER,DROP对象时及进行其他DDL操作时会激发相关的触发器,利用它可以影响数据库业务规则。
(3)CLR触发器。该类触发器在.NET Framework中创建,不像其他触发器需要执行T-SQL过程。
(4)登录触发器。当与SQL Server实例建立连接时会激发该类触发器。