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 ・
版权声明:本文标题:触发器在保持数据库完整性方面的应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1714287183a673552.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论