触发器触发器的作用
触发器的作用 时间:2021-04-05 阅读:(
)
第3期收稿日期:2012-06-09*基金项目:安徽省教育厅教科研课题(项目编号:JG10101);亳州师专教科研课题(项目编号:BSJKY0917);亳州师专教学研究项目(项目编号:BZSZJYXM201112).
作者简介:耿涛(1981-),男,安徽蒙城人,硕士,研究方向:数据库技术.
引言数据库技术是计算机科学的一个非常重要的分支.
目前,数据库管理系统已从专用的应用程序发展为通用的软件平台,应用范围也越来越广.
数据的完整性和安全性是数据库应用软件开发过程中要考虑的一个非常重要的问题,利用触发器可以实现比约束更严格更灵活的规则定义,在SQLServer2005数据库服务器中合理地应用触发器可以提高数据的安全性,并且缩短前台应用程序的开发周期.
1触发器的基本概念1.
1触发器的定义触发器就是一种特殊的存储过程,它是在系统执行某些特定的T-SQL语句时自动执行的.
当数据表发生了Insert、Update或者Delete操作时触发器会被激活并自动执行.
在SQLServer2005中,当用户对数据库(表)进行Create、Alter和Drop操作时,系统也会激活相应的触发器.
1.
2触发器的作用在数据库设计过程中,如何保证数据库中数据的有效性和完整性是一个非常重要的问题.
保证数据的有效性和完整性的两种常用方法是约束(Check)和触发器(Trigger).
约束是直接设置在表内部的,只能实现一些比较简单的功能,比如字段的有效性和唯一性的检查、默认值的自动填入、表与表之间参照完整性的设置等;而触发器可以实现较为严格的、复杂的、由主键和外键不能保证的完整性和有效性的控制.
触发器的功能主要有以下几点:(1)跟踪数据变化.
监视数据库内数据的变化,禁止一些数据库不允许的操作,使数据库的操作更安全;(2)级联和并行运行.
可以监测到数据表中数据的变化,并自动地级联更新整个数据库中的各项内容,从而保证数据的一致性;(3)返回用户自定义的提醒信息.
当用户执行了某些操作时,可以向前台应用程序返回一个更加友好的提醒信息,使程序更加人性化;(4)保护数据库(表).
触发器可以撤销用户对数据库(表)的Drop和Alter操作,从而实现对数据的保护,保证了数据库的安全性.
1.
3触发器的类型在SQLServer2005中,触发器可以分为DML触发器和DDL触发器两种.
(1)DML触发器DML触发器是在数据库服务器中发生数据操纵语言(DataManipulationLanguage)事件时触发的,比如,在指定的表或视图中执行Insert、Update、Delete操作时就会触发.
数据库系统将DML触发器和触发它的语句作为可在触发器内部回滚的单个事务来处理,如果检测到错误,整个事务就会自动回滚.
根据触发器事件类型的不同,可以将DML触发器分为Insert触发器、Update触发器和Delete触发器三种,分别在数据库中执行Insert、Update和Delete操作时触发.
根据触发事件的操作时间,可以将DML触发器分为After触发器和Insteadof触发器.
After触发器是在对数据表的操作完成之后才被触发执行.
Insteadof触发器是在对数据表的操作之前被触发的,它没有执行原来SQL语句中的操作(比如Insert、Update、Delete),而是执行了触发器本身所定义的操作.
(2)DDL触发器DDL触发器是在响应数据定义语言(DataSQLServer2005触发器在图书管理系统中的应用研究*耿涛,黄磊,刘儒香(亳州师范高等专科学校,安徽亳州236800)【摘要】触发器是一种特殊的存储过程,系统会在执行某些特定的T-SQL语句时自动执行在触发器内部定义的SQL语句,从而保证了数据的安全性和完整性.
在图书管理系统后台数据库中定义合适的触发器,可以提高图书数据库的安全性,减轻前台管理系统的运行负担.
【关键词】触发器;图书管理系统;数据完整性【中图分类号】TP311.
138【文献标识码】A【文章编号】1673-1891(2012)03-0069-03西昌学院学报·自然科学版JournalofXichangCollege·NaturalScienceEdition第26卷第3期2012年09月Vol.
26,NO.
3Sep.
,2012西昌学院学报·自然科学版第26卷DefinitionLanguage)时被触发的,一般用于执行数据库中的管理任务,比如审核和规范数据库操作、防止数据表结构被修改等.
DDL触发器不会为响应对表或视图的Update、Insert、Delete语句而触发,而是在系统针对数据库或数据库对象执行Create、Alter、Drop等操作时被触发的.
1.
4触发器的原理SQLServer为每个DML触发器定义了两个特殊的虚拟表Inserted和Deleted,这两个表建立在数据库服务器的内存中,对于用户来说是只读的,不能对其进行修改和删除.
当触发器的任务完成之后,这两个表也会从内存中删除.
当用户执行Insert操作时,Inserted表中存储的是最近一次插入的数据;当用户执行Delete操作时,Deleted表中存储是被删除的数据;当用户执行Update操作时,Deleted表中存储的是更新前的原数据,Inserted表中存储的是更新后的新数据.
有了Inserted和Deleted这两个表,系统可以在遇到错误时轻松地把数据库回滚到错误操作前的正确状态.
对于After触发器,SQLServer先执行用户对数据表的操作,在用户的操作完成之后才被触发,执行触发器内部定义的SQL语句.
对于Insteadof触发器,在用户的操作之前就执行了其内部定义的SQL语句,并且根据触发器内部SQL语句执行的结果决定是否执行用户原本对数据的操作.
2触发器在图书管理系统中的应用下面以图书管理系统中最主要四个数据表学生表Student、班级表Class、图书表Book、借阅记录表Browrecord为基础,探讨触发器在图书管理系统中的应用.
创建这四个数据表的T-SQL语句如下:(1)createtablestudent(stuidchar(10),stunamevarchar(10),stusexchar(2),classidchar(10))(2)createtableclass(classidchar(10),classnamevarchar(30),specialityidchar(5))(3)createtablebook(bkidchar(10),bknamevarchar(40),wordnumint,publishervarchar(50),pubdatedatetime,pricenumeric(6,1),authorvarchar(50),stockqtyint)(4)createtablebrowrecord(bkidchar(10),stuidchar(10),borrowtimedatetime,returntimedatetime,remarkvarchar(50))2.
1创建一个触发器,当向学生表Student中插入新的记录时,显示信息"又添加了一位新同学".
createtriggertri_ins_stuonstudentafterinsertasbeginprint'又添加了一位新同学!
'end2.
2创建一个触发器,当修改了班级表Class中的班级号classid时,利用触发器自动级联修改学生表Student中的班级号classid.
createtriggertri_upd_classonclassforupdateasdeclare@oldclassidchar(10),@newclassidchar(10)select@oldclassid=Deleted.
classid,@newclassid=Inserted.
classidfromInserted,DeletedwhereInserted.
classname=Deleted.
classnameupdatestudentsetclassid=@newclassidwhereclassid=@oldclassid2.
3创建一个触发器,在向借阅记录表Browrecord中插入学生借书信息时,自动修改图书表Book中图书的库存数量stockqty.
createtriggertri_ins_browrecordonbrowrecordafterinsertasupdatebooksetstockqty=stockqty-1wherebook.
bkidin(selectbkidfrominserted)2.
4创建一个触发器,在借阅记录表Browrecord中,对于没有还书(returntime为NULL)的记录,只能修改还书时间returntime和备注remark的属性值;已经还书的记录,则不能修改任何属性值,以此来保护借阅记录表的安全性.
createtriggertri_upd_recordonbrowrecordforupdateasdeclare@returntimeasdatetime,@remarkasvarchar(50)select@returntime=returntime,@remark=remarkfromdeletedif@returntimeisnotnull··70第3期print'你不能修改已经完成的借阅记录!
'elseifnot(update(returntime)orupdate(remark))beginprint'你不能修改还书时间和备注以外的信息!
'rollbackend2.
5创建一个触发器,在删除学生表信息时先判断在借阅记录表Browrecord中有没有该生借书未还的记录,如果有则不能删除,否则可以删除.
createtriggertri_del_studentonstudentinsteadofdeleteasbeginifexists(select*frombrowrecordwherestuidin(selectstuidfromdeleted)andreturntimeisNULL)print'该生借书未还记录,不能删除其信息!
'elsedeletefromstudentwherestuidin(selectdistinctstuidfromdeleted)end3结语在数据库系统的开发中,恰当合理地运用触发器,可以实现一些较为复杂的业务规则的定义,从而轻松实现了数据库中数据的安全性,也大大提高了数据库应用软件的开发效率.
注释及参考文献:[1]王珊,萨师煊.
数据库系统概论[M].
北京:高等教育出版社,2008:160-163.
[2]黄存东.
数据库原理及应用(SQLServer2005)[M].
北京:中国水利水电出版社,2011:199-210.
[3]邵莉,李清茂.
触发器技术在教学管理系统中的应用[J].
内江师范学院学报,2008,23(8):39-41.
[4]刘晓平.
触发器在数据库中的应用[J].
韶关学院学报(自然科学版),2007,28(3):35-38.
TheApplicationResearchofSQLServer2005TriggerintheLibraryManagementSystemGENGTao,HUANGLei,LIURu-xiang(BozhouTeachersCollege,Bozhou,Anhui236800)Abstract:Thetriggerisaspecialkindofstoringprocedure.
ThesystemwillautomaticallyperformcertainSQLstatementsdefinedinsidethetriggerwhencarryingoutsomeparticularT-SQLstatements,thusensuringdatasecurityandintegrity.
Theappropriatedefinitionofthetriggerhelpstoimprovethesecurityofthebookdatabaseandalleviatetherunningburdenofthelibrarymanagementsystem.
Keywords:Trigger;Thelibrarymanagementsystem;Dataintegrity耿涛等:SQLServer2005触发器在图书管理系统中的应用研究··71
提速啦简单介绍下提速啦 是成立于2012年的IDC老兵 长期以来是很多入门级IDC用户的必选商家 便宜 稳定 廉价 是你创业分销的不二之选,目前市场上很多的商家都是从提速啦拿货然后去分销的。提速啦最新物理机活动 爆炸便宜的香港CN2物理服务器 和 日本CN2物理服务器香港CTG E5 2650 16G内存 20M CN2带宽 1T硬盘 150元/月日本CN2 E5 2650 16G内存 20M C...
Pia云商家在前面有介绍过一次,根据市面上的信息是2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台。这个云服务商家主要销售云服务器VPS主机业务和服务,云服务器采用KVM虚拟架构 。目前涉及的机房有美国洛杉矶、中国香港和深圳地区。洛杉矶为crea机房,三网回程CN2 GIA,自带20G防御。中国香港机房的线路也是CN2直连大陆,比较适合建站或者有游戏业务需求的用户群。在这篇文章中,简...
美国服务器哪家平台好?美国服务器无需备案,即开即用,上线快。美国服务器多数带防御,且有时候项目运营的时候,防御能力是用户考虑的重点,特别是网站容易受到攻击的行业。现在有那么多美国一年服务器,哪家的美国云服务器好呢?美国服务器用哪家好?这里推荐易探云,有美国BGP、美国CN2、美国高防、美国GIA等云服务器,线路优化的不错。易探云刚好就是做香港及美国云服务器的主要商家之一,我们来看一下易探云美国云服...
触发器的作用为你推荐
公司网络被攻击最近公司频繁的受到网络攻击,导致网络瘫痪,又碰到arp攻击,有病毒的,有点崩溃。。。2020双十一成绩单2020年12月四级考试什么时候出成绩rawtools相机中的RAW是什么意思?rawtoolsTF卡被写保护了怎么办?rawtoolsU盘显示是RAW格式怎么办rawtools佳能单反照相机的RAW、5.0M 是什么意思?8090lu.com《8090》节目有不有高清的在线观看网站啊?杨丽晓博客杨丽晓是如何进入娱乐圈的?广告法新修订的《广告法》有哪些内容dpscycle国服魔兽WLK,有什么适合死亡骑士的插件?
免费网站域名注册 阿云浏览器 精品网 免费网站监控 轻量 gg广告 大容量存储器 seednet linux使用教程 免费mysql数据库 根服务器 联通网站 丽萨 电信网络测速器 免费网络 lamp怎么读 成都主机托管 稳定空间 创速 免备案cdn加速 更多