触发器触发器的作用

触发器的作用  时间: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

新网,域名7月盛夏1核心2G内存.COM域名仅19.9元/首年,主机9.9元/月,企业邮箱0元体验

新网好不好?新网域名便宜吗?新网怎么样?新网是国内老牌知名域名注册商,企业正规化运营,资质齐全,与阿里云万网和腾讯云DNSPOD同为国内服务商巨头。近日新网发布了最新的七月放价季优惠活动,主要针对域名、云主机、企业邮箱、SSL证书等多款云产品推送了超值的优惠,其中.com顶级域名仅19.9元/首年,.cn域名仅16元/首年,云主机1核心2G内存3Mbps带宽仅9.9元/月,企业邮箱更是免费送1年,...

FBICDN,0.1元解决伪墙/假墙攻击,超500 Gbps DDos 防御,每天免费流量高达100G,免费高防网站加速服务

最近很多网站都遭受到了伪墙/假墙攻击,导致网站流量大跌,间歇性打不开网站。这是一种新型的攻击方式,攻击者利用GWF规则漏洞,使用国内服务器绑定host的方式来触发GWF的自动过滤机制,造成GWF暂时性屏蔽你的网站和服务器IP(大概15分钟左右),使你的网站在国内无法打开,如果攻击请求不断,那么你的网站就会是一个一直无法正常访问的状态。常规解决办法:1,快速备案后使用国内服务器,2,使用国内免备案服...

极光KVM美国美国洛杉矶元/极光kvmCN7月促销,美国CN2 GIA大带宽vps,洛杉矶联通CUVIP,14元/月起

极光KVM怎么样?极光KVM本月主打产品:美西CN2双向,1H1G100M,189/年!在美西CN2资源“一兆难求”的大环境下,CN2+大带宽 是很多用户的福音,也是商家实力的象征。目前,极光KVM在7月份的促销,7月促销,美国CN2 GIA大带宽vps,洛杉矶联通cuvip,14元/月起;香港CN2+BGP仅19元/月起,这次补货,机会,不要错过了。点击进入:极光KVM官方网站地址极光KVM七月...

触发器的作用为你推荐
杨紫别祝我生日快乐祝自己生日快乐内涵丰富的话嘉兴商标注册我在濮院想注册一个羊毛衫商标?该怎么做?22zizi.com河南福利彩票22选52010175开奖结果5xoy.comhttp www.05eee.comse9999se.comexol.smtown.comwww.147.qqq.com谁有147清晰的视频?学习学习pp43.com登录www.bdnpxzl.com怎么进入网站后台啊222cc.com有什么电影网站啊www.28.cnXX小说网站谁有啊?新广告法为什么新广告法是有史以来最严的广告法
虚拟主机评测网 域名抢注 东莞服务器租用 韩国空间 rak机房 流媒体服务器 好看qq空间 老左正传 中国网通测速 qq金券 97rb 服务器托管价格 apachetomcat 回程 隐士ddos 次世代主机 宿主机 免费网络电视软件 web服务器软件下载 电脑主机噪音大 更多