SQL Server 2005中用触发器实现数据库的数据完整性研究

2011-11-07 08:37邓有林
湖南工业职业技术学院学报 2011年4期
关键词:保山触发器完整性

邓有林

(保山学院信息学院,云南保山678000)

SQL Server 2005中用触发器实现数据库的数据完整性研究

邓有林

(保山学院信息学院,云南保山678000)

数据库中的数据是从外界输入的,输入后面临修改、删除等操作,由于种种原因,会发生输入无效或错误信息。保证数据库中数据的完整性,成为数据库系统,尤其是多用户的关系数据库系统首要关注的问题。本文介绍了在SQL Server 2005数据库系统中,用触发器实现数据完整性的控制方法,并举例说明触发器的实际应用。

SQL Server 2005;数据完整性;触发器

一、前言

数据完整性是指数据库中数据的正确性、有效性和相容性,为了防止数据库中存在不符合语义规定的数据和防止系统输入/输出无效信息而提出的[2]P97。

触发器是一种特殊类型的存储过程,这种存储过程不能被用户直接调用,而是通过事件进行触发而被执行的[2]P206。它是一个强有力的工具,可以使商业的业务规则集成到数据库中去,从而使其可以绕开用户控制,使系统在有数据修改时能够强行执行其业务规则。不但保证了数据的完整性,同时还保留了存储过程高效率的特点,为系统提供了良好的性能。

触发器主要有如下优点:触发器可以强制限制,设置复杂的约束,这些限制比CHECK约束所定义的更为复杂;对用户透明,自动执行,当对表中的数据作了任何修改后立即被激活;触发器可以通过数据库中的相关表实现级联操作,进行层叠更改;可以截获用户修改表时的输入数据,采取相应的措施;一个表中的多个同类触发器(INSERT、UPDATE或DELETE)允许采取多个不同的对策以响应同一个修改语句。

触发器有着广泛的应用,但也存在着内在的约束,具体限定机制如下:触发器只在触发它的语句完成后执行,一个语句只能触动一次触发器;如果语句在表中执行违反条件约束或引起错误,触发器不会触动;触发器视为单一事务中的一部分,因此可以由原触发器复原事务,如果在事务过程中侦测到严重的错误,则会自动复原整个事务;当触发器触动时若产生任何结果,就会将结果传回其调用的应用程序[2]P206。

二、SQL Server 2005的触发器

在SQL Server 2005中,根据触发事件的不同,触发器可以分为两类,一类是DML触发器,另一类是DDL触发器。其中DDL触发器是SQLServer 2005的新增功能,当服务器或数据库中发生数据定义语言(DDL)事件时将调用该触发器;DML触发器是指当数据库中发生数据操作语言(DML)事件时被调用。

1.DML触发器

DML触发器是当服务器中发生数据操作语言(DML)事件时执行的操作。DML触发器包括三种类型:AFTER触发器、INSTEADOF触发器、CLR触发器。

AFTER触发器在执行了INSERT、UPDATE或DELETE语句操作之后执行,INSTEADOF触发器在INSERT、UPDATE或DELETE语句运行时替代操作,CLR触发器将执行在托管代码中(如.NETFramework)编写的方法,而非Transact-SQL存储过程。

2.DDL触发器

DDL触发器是SQL Server 2005的新增功能,当服务器或数据库中发生数据定义语言DDL事件时将调用这些触发器,在CREATE、ALTER、DROP和其他DDL语句上操作,用于执行管理任务。

三、在SQL Server 2005中用触发器实现数据完整性

SQL Server 2005中的触发器有DML和DDL两种,本文主要介绍利用DML触发器实现数据完整性。

SQL Server 2005触发器在使用过程中,系统自动为其创建Inserted和Deleted两个临时表,这两个表固定存储在与触发器一起的内存中,不存放在数据库中,由系统自动维护。这两个临时表的结构与触发器作用的数据表的结构相同,存放被插入、删除或更新的记录的副本,每个触发器只能访问自己的临时表,触发器工作完成后,与该触发器相关的这两个临时表也会被自动删除。由于Inserted和Deleted两个表中存放的是被操作的记录的副本,所以,可以通过Select语句检查Inserted和Deleted表中记录,来实现数据的有效性、完整性和一致性的控制检查。

本文以“学生成绩管理”数据库为例,在数据的插入、删除和修改中,介绍利用触发器实现数据的完整新、有效性和一致性的方法。该数据库的主要表及其结构如下:

学生(学号,姓名,性别,班级,出生日期,联系电话)

课程(课程编号,课程名称,周学时,学分)

成绩(学号,课程编号,成绩)

根据该数据库在实际应用中的要求,学生表中的“学号”是主关键字,不允许重复,“性别”必须是“男”或“女”;课程表的“课程编号”是主关键字,不允许重复;成绩表中的“学号”和“课程编号”是外部关键字,必须与学生表中的“学号”和课程表中的“课程编号”一致。在学生记录的插入时,应检查是否出现学号重复,性别是否正确。

1.INSERT触发器

当执行INSERT语句往表中插入新记录时,插入的记录被同时添加到inserted表中,将inserted表中的记录与其他相关表中记录作比对,可以实现数据一致性的控制,对inserted表中的数据进行分析,可以实现数据有效性和完整性的控制。

学生表插入记录的触发器设计:

2.DELETE触发器

执行DELETE语句删除表中记录时,被删除的记录会被传送到deleted表中,可以对deleted表中记录进行备份,以备以后查看及恢复,也可以与其他表中数据进行比对,判断记录是否可以被删除,例如,删除学生记录时,如果该学生还存在成绩信息就不能删除。

3.UPDATE触发器

执行UPDATE语句更新表中数据时,相当于同时执行DELETE和INSERT操作,修改前的记录被保存到deleted表中,修改后的记录被保存到inserted表中。可以利用这两个临时表,进行记录的级联更新,例如,更新了学生表中的学号,将一起更新成绩表中相应的学号。

更新学生记录的触发器设计:

课程表的触发器设计,与学生表中记录的增加、修改、删除操作的触发器设计是一样的模式。

四、总结

触发器能保持数据的完整性、有效性和一致性,当对表中记录进行操作时可以对其进行检测控制,也可以方便地基于一个表的修改,自动更新其他相关表的记录,以保证数据的一致性。在数据库的应用中,触发器扮演着很重要的角色,无论是作为提供高级参照完整性功能的途径,还是执行自动维护非正规化数据的任务,触发器都能帮助用户实现满足实际需要的规则,简化业务逻辑,并使系统更方便更有效。

[1]刘晓玲.SQL Server中利用触发器实现数据完整性[J].济南职业学院学报.2005(4)

[2]虞益诚.SQL Server 2005数据库应用技术(第二版)[M].北京:中国铁道出版社,2004(12)

[3]焦华.数据库技术及应用[M].北京:地址出版社,2006(8)

[4]徐友武.SQLServer 2005触发器应用研究 [J].计算机与信息技术,2009(9)

[5]冯洪峰.存储过程在SQL Server 2005中应用[J].电脑编程与技巧,2010(14)

[6]苏志军.浅析SQL Server 2005中的DDL触发器技术[J].电脑学习,2010(3)

[7]钟亚妹.触发器在SQL Server数据库开发中的应用与研究[J].电脑知识与技术,2011(11)

The Research of the Data Integrity of SQL Server 2005 with Trigger Realize Database

DENG You-Lin
(Baoshan collegeinformation institutein baoshan,Baoshan 678000,yunnan)

thedatain thedatabasefromoutsideof theinput,Then it facesafter modification and deletion of operation,it will occur input invalid or false information duetovariousreasons.Ensuretheintegrity of thedatain thedatabase,becomeadatabasesystem,especially many users database systemtop issue.Thispaper introducesthe SQLServer 2005 databasesystems,realizethe integrity of thedatawith flip-flop control method,and illustrate theactual application of thetrigger.

SQL Server 2005;dataintegrity;trigger

TP12

A

1671-5004(2011) 04-0023-03

2011-6-20

邓有林(1977—),男,保山学院讲师,在读研究生,研究方向:计算机应用技术、数据库。

猜你喜欢
保山触发器完整性
稠油热采水泥环完整性研究
走过万水千山 最爱一座保山
莫断音动听 且惜意传情——论音乐作品“完整性欣赏”的意义
使用触发器,强化安全性
精子DNA完整性损伤的发生机制及诊断治疗
PTN技术在保山广电网络的具体应用
漫画10幅
桩身完整性检测中缺陷的综合判别
几种常见触发器工作方式的讨论
对触发器逻辑功能转换的分析