admin 管理员组

文章数量: 1184232


2024年4月28日发(作者:源程序是指什么程序的代码)

第13卷第2期 

201 1年2月 

天津职业院校联合学报 ’ 

No.2 Vo1.13 

Feb.2011 

Journal of Tianj in Vocational Institutes 

触发器在保持数据库完整性方面的应用 

怀艾芹 

(天津机电职业技术学院,天津市 300131) 

摘要: 触发器是SQL Server数据库管理系统为应用程序开发人员提供的一种保证数据库中数据完整性的方 

法,是一种特殊类型的存储过程。在对触发器的概念,作用,类型进行阐述的基础上,说明使用SQL Server2005 DML 

触发器可以保证实现check约束、foreign key约束等组件无法实现的复杂的数据完整性。 

关键词:数据库;数据完整性;触发器;SQL Server 2005 

中图分类号:TP392 文献标识码:A 文章编号:1673—582X(2011)02—0092一O4 

触发器的概念和作用 

触发器是一种特殊类型的存储过程,其特殊主要体现在它在插入,、删除或修改指定表中的数据时 

自动触发执行触发器中定义的T—SQL语句,从而确保对数据的处理必须符合这些T—SQL语句所 

定义的规则,实现更为复杂的数据完整性约束。存储过程创建完后必须通过存储过程的名字调用才 

能执行。触发器的一般作用如下: 

级联修改数据库中相关的表。 

执行比检查约束更为复杂的约束操作。 

拒绝或回绝违反引用完整性的操作。检查对数据表的操作是否违反引用完整性,并选择相应 

比较表修改前后数据之间的差别,并根据差别采取相应的操作。 

的操作。 

1.触发器的种类 

SQL Server2005提供了两种类型的触发器:DML触发器和DDL触发器。 

(1)DML触发器。DML触发器是在执行数据操作语言事件时被调用的触发器,其中数据操作语 

言事件包括INSERT、UPDATE和DELETE语句。DML触发器分为AFTER和INSTEAD OF两 

种:AFTER触发仅在触发T—SQL语句中指定的所有操作都已成功执行时才被激发,而INSTEAD 

OF触发器用于替代引发触发器执行的T—SQL语句,被替代的T—SQL语句并不执行。 

(2)DDL触发器。与DML触发器类似,DDL触发器也是一种特殊的存储过程,由相应的事件触 

发后执行。与DML不同的是,它相应的触发事件是由数据定义语言引起的事件,包括CREATE、 

ALTER和DROP语句。DDL触发器用于执行数据库管理任务,如调节和审计数据库运转。DDL触 

发器只能在触发事件发生后才会调用执行,即它只能是AFTER类型的。 

2.DML触发器工作时所涉及到的两个特殊表 

SQL Server2005为每个DML触发器都创建了两个专用临时表:inserted表和deleted表。这两 

个表的结构总是与被该触发器作用的表的结构相同,触发器执行完成后,与该触发器相关的两个表也 

会被删除。 

Inserted表:用来存储执行过insert或update语句之后所影响的行内容。执行insert时,新添加 

的行会同时附加至触发程序表和inserted表。执行update时,旧行被复制到deleted表格,新行被复 

收稿日期:2OlO一11一lO 

作者简介:怀艾芹(1977一),女,湖北省随州人,天津机电职业技术学院讲师,从事软件工程方面的研究。 

92 ・ 

制到触发程序表及inserted表。 

Deleted表:用来存储因执行delete或update语句而受影响的行内容,在执行delete或update语 

句时,从触发程序表中被删除的行发送到deleted表。 

当对表中的数据进行insert、delete、update操作时,inserted和deletde表中保存的数据如表1所示。 

表1 inserted和deleted表中数据 

数据操作 Inserted表 Deleted表 

Insert 新添加的行 

delete 被删除的行 

update 新的数据行 旧的数据行 

二、DML触发器的应用 

1.使用T—SQL语句创建DML触发器 

创建DML触发器可以使用CREATE TRIGGER语句,其基本的语法格式如下: 

Create trigger trigger

_

name //trigger—name:触发器的名字 

On{tablel view} //tablel view:指定触发器的表或视图名 

[with encryption] //对触发器加密 

{ 

{{afterl instead of) //afterf instead of:触发器的类型 

{[insert][,][delete][,][update]} //指定在表上执行哪些数据修改语句时将激活触发器 

As 

Sql

statement[,,,n] //指定触发器中包含的T—SQL语句 

) 

) 

2.DML触发器在保持数据库完整性方面的实际应用 

在一个Stuscore(学生成绩)数据库中有XSQK(学生情况)表,用于存储学生的基本信息;XSq 

(学生成绩)表;用于存储学生的成绩信息;XSKC(学生课程)表,用于存储课程信息。三个表的表结 

构如表2至表4所示(为了减少篇幅,对表结构作了简化处理)。 

表2 XSQK表结构 

列名 数据类型 长度 允许空值 说明 

学号 Varchar 10 No 主键 

姓名 Char 12 N0 

性别 char 2 Yes 

总学分 tlnVtlnt 1 yes 

表3 XScj表结构 

列名 数据类型 长度 允许空值 说明 

学号 varchar 10 No 主键 

课程号 Char 3 No 主键 

成绩 Tinvint 1 Yes 

学分 t1nVt1nt 1 yes 

・ 

93 ・ 

表4 XSKC表结构 

列名 

课程号 

数据类型 

char 

长度 

3 

允许空值 

No 

说明 

主键 

课程名 

学时 

varchar 

Tinvint 

16 

1 

1 

No 

No 

No 

开课学期 Tinyint 

例1:创建触发tr1,实现如下功能:当在xscj表添加一条学生的成绩信息后,自动更新xsqk表中 

该学生的总学分信息。 

(1)创建 

Create trigger trl on xscj 

After insert 

As 

Declare@sno varchar(10),@xf tinyint 

Select@sno=学号,@xf=学分from inserted 

Update xsqk set总学分=isnull(总学分,0)+@xf 

Where学号=@sno 

(2)激活trl触发器 

Insert into xscj 

Values 

( 1 ,‘101 ,80,4) 

(3)验证 

Select*from xsqk 

结果:xsqk表中学号为“1”的学生总学分增加了4学分。 

例2:创建触发器tr2,实现如下功能:当删除xskc表中的某门课程的记录时,对应的xscj表中与 

此课程有关的信息均被删除。 

(1)创建 

Create trigger tr2 on xskc 

After delete 

As 

Delete ̄scj from xscj,deleted where xscj.课程号=deleted.课程号 

(2)激活tr2触发器 

Delete from,,scj where课程号=‘1()1’ 

(3)验证 

Select*from xscj 

结果:xscj表中课程号为“101”的记录均被删除。 

例3:创建一instead of触发器tr3,防止用户对xsqk表中的数据进行任何删除操作。 

(1)创建 

Create trigger tr3 on xsqk 

Instead O f delete 

As 

Print‘不能对xsqk表进行删除操作’ 

(2)激活tr3触发器 

Delete from xsqk where学号=‘1’ 

94。 

(3)验证 

Select*from xsqk 

结果:提示“不能对xsqk表进行删除操作”,且xsqk表中学号为“1”的学生仍存在。 

参考文献: 

[1]李春葆,赵丙秀,张牧.数据库系统开发教程[M].北京:清华大学出版社,2008. 

[23余芳,肖蓉,刘蔚琴.中文SQL Server 2005数据库管理与开发[M].北京:冶金工业出版社,2006. 

[3]张鑫燕,吴小松.SQL Server 2000程序设计[M] 北京:科学出版社,2003. 

[4]姬晓辉,触发器在数据库完整性方面的应用[J].洛阳大学学报,2006,(04). 

[5]程志梅,邱霞明,王晓燕.SQL Server2000数据库q-触发器的妙用[J].计算机应用与软件,2009,(【】3) 

The Role that Trigger Plays in Maintaining the Integrity of Data——base 

HUAI Ai——qin 

(Tianjin Vocational College of Mechanics and Electricity,Tianjin 30013 China) 

Abstract:Trigger is a method that guarantees the integrity of data—base and a special type of 

stored procedure.It is provided by SQL Server data——base management system to developers of applica— 

tion programs.After an elaboration of the triggers concept,functions and types,the paper declares that 

the SQL Server 2005 DML trigger can guarantee the complicated data integrity. 

Key words:data—base;data integrity;trigger;SQL Server 2005 

龇.1lL.St.址 . L.1止.; . .;止.‘止 

J L.‘t 

(上接第85页) 

Research on Java 3D Virtual Interior Decorative Effect Display 

LI Rui 

(Xinhua Staif and Workers University,Tianjin 300040 China) 

Abstract..The current modeling method is mainly programmed by using Open GL and VRML 

languages,which is'however,hard to handle and not easy to promote

By comparison,Java3D,as a 

new application programming interface,provides efficient development property

This paper introduces 

the author's research on how to use Java3D to build virtual environment,to enrich 3D performance re- 

suits and to realize the environment—user interaction.It also shows the means of realizing roaming in 

lava3D virtua】scene. 

Key words:Java3D;virtual reality;virtual scene 

・ 95 ・ 


本文标签: 触发器 执行 数据库