杨铭
【摘 要】触发器是SQL Server重要的数据库对象,使用触发器来完成业务规则,能达到简化程序设计的目的。本文介绍触发器的概念、优点,以及使用Transact-SQL语句创建触发器的方法。
【关键词】数据库;视图;SQL Server
1 触发器的概念
在SQL Server 2005数据库系统中,存储过程和触发器都是SQL语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程,它是一种在基本表被修改时自动执行的内嵌过程,主要通过事件进行触发而被执行,而存储过程可以通过存储过程名字而被直接调用。当对某一张表进行诸如UPDATE.、INSERT、DELETE这些操作时,SQL Server 2005就会自动执行触发器所定义的SQL语句。从而确保对数据的处理符合由这些SQL语句所定义的规则。触发器的主要作用是其能实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其他许多不同的功能。
2 使用触发器的优點
由于在触发器中可以包含复杂的处理逻辑,因此,应该将触发器用来保持低级的数据的完整性,而不是返回大量的查询结果。使用触发器主要可以实现以下操作:
1)强制比CHECK约束更复杂的数据的完整性
在数据库中要实现数据的完整性的约束,可以使用CHECK约束或触发器来实现。但是在CHECK约束中不允许引用其他表中的列来完成检查工作,而触发器可以引用其他表中的列来完成数据的完整性的约束。
2)使用自定义的错误提示信息
用户有时需要在数据的完整性遭到破坏或其他情况下,使用预先自定义好的错误提示信息或动态自定义的错误提示信息。通过使用触发器,用户可以捕获破坏数据的完整性的操作,并返回自定义的错误提示信息。
3)实现数据库中多张表的级联修改
用户可以通过触发器对数据库中的相关表进行级联修改。
4)比较数据库修改前后数据的状态
触发器提供了访问有INSERT、UPDATE或DELETE语句引起的数据前后状态变化的能力。因此用户就可以在触发器中引用由于修改所影响的记录行。
5)维护规范化数据
用户可以使用触发器来保证非规范数据库中的低级数据的完整性。维护非规范化数据与表的级联是不同酌。表的级联指的是不同表之间的主外键关系,维护表的级联可以通过设置表的主键与外键的关系来实现。而非规范数据通常是指在表中派生的、冗余的数据值,维护非规范化数据应该通过使用触发器来实现。
3 触发器的创建
基本语法如下:
CREATE TRIGGER trigge_name
ON{table|view}
{ FOR |AFTER|INSTEAD OF } { [INSERT] , [UPDATE] , [DELETE]}
[WITH ENCRYPTION]
AS
IF UPDATE (cotumn_name)
[ { and|or} UPDATE (column_name) …]
sql_statesments
其中:
(1)trigge_name:是触发器的名称,用户可以选择是否指定触发器所有者名称。
(2)table|view:是执行触发器的表或视图,可以选择是否指定表或视图的所有者名称。
(3)AFTER:是指在对表的相关操作正常操作后,触发器被触发。如果仅指定FOR关键字,则AFTER是默认设置。
(4)INSTEAD OF:指定执行触发器而不是执行触发语句,从而替代触发语句的操作。可以为表或视图中的每个INSERT、UPDATE或DELETE语句定义一个INSTEAD OF触发器。如果在对一个可更新的视图定义时,使用了WITH CHECK OPTION选项,则lNSTEAD OF触发器不允许在这个视图上定义。用户必须用ALTER VIEW删除选项后,才能定义INSTEAD OF触发器。
(5){[INSERT],[UPDAYE],[DELETE]}:是指在表或视图上执行哪些数据修改语句时激活触发器的关键字。这其中必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的关键字。如果指定的选项多于一个,需要用逗号分隔。对于INSTEAD OF触发器,不允许在具有ON DELETE级联操作引用关系的表上使用DELETE选项。同样,也不允许在具有ON UPDATE级联操作引用关系的表上使用UPDATE选项。
(6)ENCRYPTION:是加密含有CREAIE TRIGGER语句正文文本的syscomments项,这是为了满足数据安全的焉要。
(7)sql_statesments:定义触发器被触发后,将执行数据库操作。它指定触发器执行的条件和动作。触发器条件是除引起触发器执行的操作外的附加条件;触发器动作是指当前用户执行激发触发器的某种操作并满足触发器的附加条件时,触发器所执行的动作。
(8)IF UPDATE:指定对表内某列做增加或修改内容时,触发器才起作用,它可以指定两个以上列,列名前可以不加表名。IF子句中多个触发器可以放在BEGIN和END之间。
4 结语
触发器是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是一种特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,正确使用触发器,是在数据库中实现数据的完整性的重要方法之一。
【参考文献】
[1]韦晨艳,杨键鸣,姚斯立.SQL数据库中存储过程、触发器的应用研究[J].中国信息界,2011(06).
[2]钟亚妹.触发器在SQL Server数据库开发中的应用与研究[J].电脑知识与技术,2011(11).
[3]徐友武.SQL Server 2005触发器应用研究[J].计算机与信息技术,2009(09).
[责任编辑:杨玉洁]