触发器是一种特殊类型的存储过程,它不同于前面介绍过的存储过程,是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。触发器使每个站点在有数据修改时自动强制执行其业务规则,并且可以用于SQLServer约束、默认值利规则的完整性检查。
触发器主要有如下三方面的特点:
(1)当数据库程序员声明的事件发生时,触发器被激活。事件可以是对某个特定关系的插
入 insert、删除 de lete 或更新 upda te。
(2)当触发器被事件激活时,不是立即执行,而是首先由触发器测试触发条件,若条件不
成立,响应该事件的触发器什么事情都不做。
(3)如果触发器声明的条件满足,则与该触发器相连的动作由DBMS执行。动作可以阻止
事件发生,可以撤销事件。
注意:触发器为数据库对象,当创建一个触发器时必须指定:①名称;②在其上定义触发器
的表;③触发器将何时激发;④指明触发器执行时应做的动作。其名称必须遵循标识符的命名规则,
数据库像存储普通数据那样存储触发器。触发器可以引用当前数据库以外的对象,但只能在当前数
据库中创建触发器。尽管不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。
触发动作实际上是一系列SQL语句,可以有两种方式:
(1)对被事件影响的每一行(FOR EACH ROW)—每一元组执行触发过程,称为行级触发器。
(2)对整个事件只执行一次触发过程(FOR EACH STATEMENT),称为语句级触发器。
该方式是触发器的默认方式。