1. 触发器的主要优点
(1) 触发器能够实施比外键约束,检查约束和规则对象等更为复杂的数据完整性检查。 (2) 和约束相比,触发器提供了更多的灵活性。约束将系统错误信息返回给用户,但这些错误并不是总能有帮助,而触发器则可以打印错误信息,调用其他存储过程,或根据需要纠正错误。 (3) 无论对表中的数据进行何种修改,录入或更新,触发器都能被激活,对数据实施完整性检查。 (4) 触发器能够级联修改数据库中的表内容。 2. 触发器支持的功能 (1) 触发器可以在事件之前、之后执行,还可以替代事件本身。例如可以定义触发器在对某关系执行insert、 update和delete操作之前(或之后)触发。 (2) 触发器代码可以引用事件中对于元组修改前后的值(OLD值和NEW值)。对于update语句,OLD值和NEW值意义很明确。 (3) 对于update事件可以定义对哪个关系、或关系中的哪一列修改时,触发器触发。 (4) 可以用WHEN子句来指定执行条件,当触发器被触发后,触发器功能代码只有在条件成立时才执行。 (5) 触发器有语句级触发器和行级触发器之 分。所谓语句级触发器是指当update语句执行完触发一次,而行触发器是指当update语句每修改完一个元组就触发一次。 (6) 触发器可以完成一些复杂的数据检查,可以实现某些操作的前后处理等。 (7) 触发器定义的约束可以在任何颗粒级别上实现、表示动态的或静态的约束、延迟或不延迟进行触发检查、可以用SQL语句定义约束触发器的功能。 3. 建立触发器的语句格式 CREATE TRIGGER 触发器名 ON [表名、视图名] [WITH ENCRYPTION] FOR {INSERT,UPDATA,DELETE } AS SQL操作语句 参数说明: 表名,视图名:为触发该触发器的表名或视图名。SQL Server中,只有表的所有者才有权建立触发器。 INSERT,UPDATA,DELETE :说明触发触发器的事件。一个定义语句允许定义多个触发事件,用逗号分开,第2个只能是插入和更新语句。 WITH ENCRYPTION:该选项对触发器的定义文本加密。 SQL操作语句:指定触发器动作。该语句中可以指定多个触发器操作,这时要用BEGIN…END将它们组成语句块。 |