ImageVerifierCode 换一换
格式:PPT , 页数:28 ,大小:129.36KB ,
文档编号:4106187      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4106187.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(数据库触发器课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

数据库触发器课件.ppt

1、触发器触发器触发器触发器l触发器概述触发器概述l问题的引入问题的引入l触发器的概念触发器的概念l触发器的原理触发器的原理l触发器的分类触发器的分类l触发器的创建、修改及删除触发器的创建、修改及删除l应用示例应用示例触发器概述触发器概述问题的引入问题的引入增加一个记录增加一个记录删除一个记录删除一个记录(“95003”,”002”,56)95001 006 9041l在在 学生管理数据库学生管理数据库 中中,某学生的某学生的 选课门数选课门数 是一个经常是一个经常访问的属性访问的属性,因此在因此在studentstudent表中增加一个属性表中增加一个属性sselnumsselnum (smal

2、lintsmallint)l在实际应用在实际应用l实例展示实例展示触发器概述触发器概述l考虑该问题涉及两个表之间的关系,可否用参照考虑该问题涉及两个表之间的关系,可否用参照完整性来实现完整性来实现?l可否用嵌套的可否用嵌套的SQLSQL语句来实现语句来实现?l问题的解决:使用触发器问题的解决:使用触发器triggertriggerlupdate student set update student set sselnumsselnum=(select=(select count(count(*)from s_c where)from s_c where s_c.snos_c.sno=stude

3、nt.snostudent.sno)l存在的问题存在的问题l触发器的主要作用就是其能够实现由主键和外键所触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性不能保证的复杂的参照完整性和数据的一致性 触发器概述触发器概述触发器的概念触发器的概念l触发器是一种特殊类型的触发器是一种特殊类型的存储过程存储过程。在。在SQL SQL ServerServer里面也就是对某一个表的一定的操作,里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发某种条件,从而执行的一段程序。l 触发器触发器触发原因触发原因对表进行插入、更新或删除对表进行插入、更新或删除

4、操作操作触发事件触发事件。l 触发结果触发结果:另一段程序的执行。:另一段程序的执行。l 思考思考 :在上例中,触发原因是什么?触发结:在上例中,触发原因是什么?触发结果是什么?果是什么?触发器概述触发器概述l 触发器和存储过程的区别:触发器和存储过程的区别:INSERT INTO INSERT INTO s_cs_c VALUES(95001,006,90)VALUES(95001,006,90)EXEC EXEC GetgradeGetgrade 95001 95001l 触发器可以用于触发器可以用于 SQL Server SQL Server 约束、默认值和规约束、默认值和规则的完整性检

5、查。则的完整性检查。触发器主要是通过事件触发而执行的,而存触发器主要是通过事件触发而执行的,而存储过程是通过调用存储过程名称而执行的。储过程是通过调用存储过程名称而执行的。触发器概述触发器概述特殊性在于:特殊性在于:l l它与表紧密相连,不可以脱离表单独存在。它与表紧密相连,不可以脱离表单独存在。l l不允许使用参数,没有返回值。不允许使用参数,没有返回值。l l不允许用户调用,当对表进行插入、删除、修改不允许用户调用,当对表进行插入、删除、修改操作时由系统自动调用并执行(相当于事件方法)。操作时由系统自动调用并执行(相当于事件方法)。触发器概述触发器概述触发器可以实现比较复杂的完整性约束:触

6、发器可以实现比较复杂的完整性约束:l l扩展约束、默认值和规则对象的完整性检查。扩展约束、默认值和规则对象的完整性检查。l l自动生成数据。自动生成数据。l l检查数据的修改,防止对数据不正确的修改,保证数据检查数据的修改,防止对数据不正确的修改,保证数据表之间数据的正确性和一致性。表之间数据的正确性和一致性。l l自定义复杂的安全权限。自定义复杂的安全权限。触发器作为一种数据库对象,在触发器作为一种数据库对象,在syscommentsyscomment系统表中系统表中存储其完整的定义信息,在存储其完整的定义信息,在sysobjectsysobject系统表中有该对象系统表中有该对象的记录。的

7、记录。触发器概述触发器概述1)触发器自动执行)触发器自动执行 在对表的数据作了任何修改(比如手工输入或者应用程序采取的在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。操作)之后立即被激活。3)触发器可以实现比)触发器可以实现比CHECK约束更为复杂的数据完整性约束约束更为复杂的数据完整性约束 在数据库中为了实现数据完整性约束,可以使用在数据库中为了实现数据完整性约束,可以使用CHECK约束或约束或触发器。触发器。CHECK约束不允许引用其它表中的列来完成检查工作,而约束不允许引用其它表中的列来完成检查工作,而触发器可以引用其它表中的列。触发器可以引用其它表中的列。

8、2)触发器能够对数据库中的相关表实现级联更改)触发器能够对数据库中的相关表实现级联更改 触发器是基于一个表创建的,但是可以针对多个表进行操作,实触发器是基于一个表创建的,但是可以针对多个表进行操作,实现数据库中相关表的级联更改。现数据库中相关表的级联更改。触发器概述触发器概述lAFTER类型触发器:l只有执行某一操作(INSERT UPDATE DELETE)之后,触发器才被触发。l只能在表上定义。触发器的分类触发器的分类lINSTEAD OF 触发器:l并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。l既可在表上定义INSTEAD OF 触发器,也可

9、以在视图上定义INSTEAD OF 触发器。触发器概述触发器概述触发器的原理触发器的原理lInserted表和Deleted表的理解:Inserted Inserted和和DeletedDeleted是逻辑(概念)表。当在定义了触是逻辑(概念)表。当在定义了触发器的表上发生了修改操作时会自动派生出这两个视图。发器的表上发生了修改操作时会自动派生出这两个视图。当在表上发生插入操作时,新插入的行将出现在插入视当在表上发生插入操作时,新插入的行将出现在插入视图中。图中。当在表上发生删除操作时,被删除的行将出现在删除视当在表上发生删除操作时,被删除的行将出现在删除视图中。图中。当在表上发生更新操作时,

10、旧行出现在删除视图中,新当在表上发生更新操作时,旧行出现在删除视图中,新行出现在插入视图中。行出现在插入视图中。触发器概述触发器概述l触发器的原理触发器的原理lInserted表和Deleted表的理解:(1)如果基于)如果基于S_C表的表的UPDATE操作定义了触发器操作定义了触发器(2)再执行语句:)再执行语句:UPDATES_CSETgrade=70WHEREsno=95001ANDcno=001在在UPDATE语句执行过程中语句执行过程中Deleted表的内容:表的内容:Inserted表的内容:表的内容:S_C表表触发器的创建触发器的创建v触发器的基本操作触发器的基本操作创建创建在创

11、建触发器前,必须注意以下几点:在创建触发器前,必须注意以下几点:1、CREATE TRIGGER 语句必须是批处理中的第一条语语句必须是批处理中的第一条语句。句。2、只能在当前数据库中创建触发器,名称必须遵循标识符、只能在当前数据库中创建触发器,名称必须遵循标识符的命名规则。的命名规则。3、表的所有者具有创建触发器的默认权限,不能将该权限、表的所有者具有创建触发器的默认权限,不能将该权限转给其他用户。转给其他用户。4、不能在临时表或系统表上创建触发器,但是触发器可以、不能在临时表或系统表上创建触发器,但是触发器可以引用临时表,但是不能引用系统表。引用临时表,但是不能引用系统表。触发器的创建触发

12、器的创建创建触发器命令格式:创建触发器命令格式:CREATETRIGGERtrigger_nameONtabelFOR|AFTER|INSTEADOFINSERT,UPDATE,DELETEASIFUPDATE(column)AND|ORUPDATE(column)sql_statement一、企业管理器一、企业管理器二、查询分析器二、查询分析器触发器的创建触发器的创建说明:说明:vFOR|AFTER|INSTEADOF:FOR|AFTER:在数据变动以后触发;:在数据变动以后触发;INSTEADOF:在数据变动以前触发;在数据变动以前触发;vINSERT|UPDATE|DELETE:分别对应

13、插入触发器、修改触发器、删除触发器分别对应插入触发器、修改触发器、删除触发器触发器的创建触发器的创建例:当在仓库表上发生插入操作时会输出例:当在仓库表上发生插入操作时会输出“插入插入了一个仓库元组了一个仓库元组”的信息。的信息。USE仓库管理仓库管理GOCREATETRIGGERWH_INON仓库仓库FORINSERTASPRINT插入了一个仓库元组插入了一个仓库元组INSERT仓库仓库VALUES(WH6,南京南京,700)触发器的创建触发器的创建例:在仓库表上定义一个例:在仓库表上定义一个删除触发器删除触发器,使得当删除仓库记,使得当删除仓库记录时,同时将所属所有职工记录的仓库号字段值置为

14、空值录时,同时将所属所有职工记录的仓库号字段值置为空值NULL。CREATETRIGGERWH_DELON仓库仓库FORDELETEASUPDATE职工职工SET仓库号仓库号=NULLWHERE仓库号仓库号IN(SELECT仓库号仓库号FROMdeleted)DELETE仓库仓库WHERE仓库号仓库号=WH6仓库(仓库号,城市,面积)仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)职工(仓库号,职工号,工资)触发器的创建触发器的创建例:对例:对S表定义一个表定义一个删除触发器删除触发器,使得当删除学生记录时,使得当删除学生记录时,将将S_C表中相应的选课记录删除。表中相应的选课记录删除。

15、S(SNO,SNAME)S_C(SNO,CNO,SCORE)触发器的创建触发器的创建例:对职工表定义一个例:对职工表定义一个插入触发器插入触发器,使得当插入职工记录时,使得当插入职工记录时,检查所参照的仓库元组是否存在,如果不存在,则撤消所做检查所参照的仓库元组是否存在,如果不存在,则撤消所做的插入操作。的插入操作。仓库(仓库号,城市,面积)仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)职工(仓库号,职工号,工资)触发器的创建触发器的创建CREATETRIGGERWH_INSON职工职工FORINSERTASIFNOTEXISTS(SELECT*FROM仓库仓库WHERE仓库号仓库号=

16、(SELECT仓库号仓库号FROMINSERTED)BEGINRAISERROR(非法仓库号非法仓库号!,1,1)ROLLBACKTRANSACTIONENDINSERT职工职工VALUES(WH5,E10,1600)IN触发器的创建触发器的创建例:对例:对S_C表定义一个表定义一个插入触发器插入触发器,使得当插入选课记录时,使得当插入选课记录时,检查所参照的学生学号和课程号是否存在,如果不存在,则检查所参照的学生学号和课程号是否存在,如果不存在,则撤消所做的插入操作。撤消所做的插入操作。S(SNO,SNAME)C(CNO,CNAME)S_C(SNO,CNO,SCORE)触发器的创建触发器的创

17、建例:对职工表定义一个例:对职工表定义一个更新触发器更新触发器,使得当职工变换所属,使得当职工变换所属仓库时,检查所参照的仓库元组是否存在,如果不存在,仓库时,检查所参照的仓库元组是否存在,如果不存在,则撤消所做的更新操作,如果新的仓库号是则撤消所做的更新操作,如果新的仓库号是WH2则将工则将工资提高资提高10%。触发器的创建触发器的创建CREATETRIGGERTR_UPDATEON职工职工FORUPDATEASDECLAREWHNOCHAR(4)IFUPDATE(仓库号仓库号)BEGINIFNOTEXISTS(SELECT*FROM仓库仓库WHERE仓库号仓库号=(SELECT仓库号仓库号

18、FROMINSERTED)BEGINRAISERROR(非法仓库号非法仓库号!,16,1)ROLLBACKTRANSACTIONENDELSEBEGINSELECTWHNO=仓库号仓库号FROMINSERTEDIFWHNO=WH2UPDATE职工职工SET工资工资=工资工资*1.1WHERE职工号职工号=(SELECT职工号职工号FROMINSERTED)ENDEND触发器的创建触发器的创建例:当插入或更新学生成绩时,触发器检查该课程是否为例:当插入或更新学生成绩时,触发器检查该课程是否为考查课,若是,则通过的成绩只能以考查课,若是,则通过的成绩只能以60分计,未通过的只分计,未通过的只能以能

19、以40分计。分计。涉及的表结构:涉及的表结构:C1(Cno,Cname,Ctype)S_C(Sno,Cno,Score)触发器的创建触发器的创建CREATETRIGGERSCORE_KCONS_CFORINSERT,UPDATEASDECLARESCOREINT,CTYPECHAR(4)SELECTSCORE=SCORE,CTYPE=CTYPEFROMC1,INSERTEDWHEREINSERTED.CNO=C1.CNOIF(CTYPE=考查考查)AND(SCORE60ANDSCORE40)BEGINRAISERROR(该课程为考查课,成绩以该课程为考查课,成绩以60或或40计计!,16,1)

20、ROLLBACKTRANSACTIONEND触发器的创建触发器的创建CREATETRIGGERSCORE_KCONS_CFORINSERT,UPDATEASDECLARESCOREINT,CTYPECHAR(4)SELECTSCORE=SCORE,CTYPE=CTYPEFROMC1,INSERTEDWHEREINSERTED.CNO=C1.CNOIF(CTYPE=考查考查)BEGINIFSCORE=60UPDATES_CSETSCORE=60WHERECNO=(SELECTCNOFROMINSERTED)ANDSNO=(SELECTSNOFROMINSERTED)ELSEUPDATES_CSE

21、TSCORE=40WHERECNO=(SELECTCNOFROMINSERTED)ANDSNO=(SELECTSNOFROMINSERTED)END触发器的修改触发器的修改修改触发器命令格式:修改触发器命令格式:ALTERTRIGGERtrigger_nameONtabelFOR|AFTER|INSTEADOFINSERT,UPDATE,DELETEASIFUPDATE(column)AND|ORUPDATE(column)sql_statement触发器的删除触发器的删除删除触发器命令格式:删除触发器命令格式:DROPTRIGGERtrigger-name例:删除例:删除SCORE_KC触发器。触发器。DROPTRIGGERSCORE_KC

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|