触发器在保持数据库完整性方面的应用
2011-10-12怀艾芹
怀艾芹
(天津机电职业技术学院,天津市 300131)
触发器在保持数据库完整性方面的应用
怀艾芹
(天津机电职业技术学院,天津市 300131)
触发器是SQL Server数据库管理系统为应用程序开发人员提供的一种保证数据库中数据完整性的方法,是一种特殊类型的存储过程。在对触发器的概念,作用,类型进行阐述的基础上,说明使用SQL Server2005 DML触发器可以保证实现check约束、foreign key约束等组件无法实现的复杂的数据完整性。
数据库;数据完整性;触发器;SQL Server 2005
一、触发器的概念和作用
触发器是一种特殊类型的存储过程,其特殊主要体现在它在插入、删除或修改指定表中的数据时自动触发执行触发器中定义的T-SQL语句,从而确保对数据的处理必须符合这些T-SQL语句所定义的规则,实现更为复杂的数据完整性约束。存储过程创建完后必须通过存储过程的名字调用才能执行。触发器的一般作用如下:
·级联修改数据库中相关的表。
·执行比检查约束更为复杂的约束操作。
·拒绝或回绝违反引用完整性的操作。检查对数据表的操作是否违反引用完整性,并选择相应的操作。
·比较表修改前后数据之间的差别,并根据差别采取相应的操作。
1.触发器的种类
SQL Server2005提供了两种类型的触发器:DM L触发器和DDL触发器。
⑴DML触发器。DML触发器是在执行数据操作语言事件时被调用的触发器,其中数据操作语言事件包括INSERT、UPDA TE和D ELETE语句。DM L触发器分为AFTER和INSTEAD OF两种:AFTER触发仅在触发T-SQL语句中指定的所有操作都已成功执行时才被激发,而INSTEAD OF触发器用于替代引发触发器执行的T-SQL语句,被替代的T-SQL语句并不执行。
⑵DDL触发器。与DML触发器类似,DDL触发器也是一种特殊的存储过程,由相应的事件触发后执行。与DM L不同的是,它相应的触发事件是由数据定义语言引起的事件,包括CREA TE、AL TER和DROP语句。DDL触发器用于执行数据库管理任务,如调节和审计数据库运转。DDL触发器只能在触发事件发生后才会调用执行,即它只能是AFTER类型的。
2.DM L触发器工作时所涉及到的两个特殊表
SQL Server2005为每个DM L触发器都创建了两个专用临时表:inserted表和deleted表。这两个表的结构总是与被该触发器作用的表的结构相同,触发器执行完成后,与该触发器相关的两个表也会被删除。
Inserted表:用来存储执行过insert或up date语句之后所影响的行内容。执行insert时,新添加的行会同时附加至触发程序表和inserted表。执行update时,旧行被复制到deleted表格,新行被复制到触发程序表及inserted表。
Deleted表:用来存储因执行delete或up date语句而受影响的行内容,在执行delete或update语句时,从触发程序表中被删除的行发送到deleted表。
当对表中的数据进行insert、delete、update操作时,inserted和deleted表中保存的数据如表1所示。
表1 inserted和deleted表中数据
二、D M L触发器的应用
1.使用 T-SQL语句创建DM L触发器
创建DML触发器可以使用CREA TE TRIGGER语句,其基本的语法格式如下:
2.DM L触发器在保持数据库完整性方面的实际应用
在一个Stuscore(学生成绩)数据库中有 XSQ K(学生情况)表,用于存储学生的基本信息;XSCJ(学生成绩)表;用于存储学生的成绩信息;XSKC(学生课程)表,用于存储课程信息。三个表的表结构如表2至表4所示(为了减少篇幅,对表结构作了简化处理)。
表2 XSQ K表结构
表3 XSCJ表结构
表4 XSKC表结构
例1:创建触发tr1,实现如下功能:当在xscj表添加一条学生的成绩信息后,自动更新xsqk表中该学生的总学分信息。
例2:创建触发器tr2,实现如下功能:当删除xskc表中的某门课程的记录时,对应的xscj表中与此课程有关的信息均被删除。
(3)验证
Select 3 f rom xsqk
结果:提示“不能对xsqk表进行删除操作”,且xsqk表中学号为“1”的学生仍存在。
[1]李春葆,赵丙秀,张牧.数据库系统开发教程[M].北京:清华大学出版社,2008.
[2]余芳,肖蓉,刘蔚琴.中文SQL Server 2005数据库管理与开发[M].北京:冶金工业出版社,2006.
[3]张鑫燕,吴小松.SQL Server 2000程序设计[M].北京:科学出版社,2003.
[4]姬晓辉.触发器在数据库完整性方面的应用[J].洛阳大学学报,2006,(04).
[5]程志梅,邱霞明,王晓燕.SQL Server2000数据库中触发器的妙用[J].计算机应用与软件,2009,(03).
A bs tra c t:Trigger is a method that guarantees the integrity of data-base and a special type of stored p rocedure.It is p rovided by SQL Server data-basemanagement system to developers of app lica2 tion p rograms.After an elaboration of the trigger’s concep t,functions and types,the paper declares that the SQL Server 2005 DM L trigger can guarantee the comp licated data integrity.
Ke y w o rd s:data-base;data integrity;trigger;SQL Server 2005
The Role that Trigger Plays in Maintaining the Integrity of Data-base
HUAIAi-qin
(Tianjin Vocational College of M echanics and Electricity,Tianjin 300131 China)
TP392
A
1673-582X(2011)02-0092-04
2010-11-10
怀艾芹(1977-),女,湖北省随州人,天津机电职业技术学院讲师,从事软件工程方面的研究。