欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据库触发器.pptx

    • 资源ID:73014469       资源大小:183.17KB        全文页数:28页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库触发器.pptx

    23:01触发器触发器概述问题的引入触发器的概念触发器的原理触发器的分类触发器的创建、修改及删除应用示例第1页/共28页23:01触发器概述问题的引入增加一个记录删除一个记录(“95003”,”002”,56)95001 006 9041l在学生管理数据库中,某学生的选课门数是一个经常访问的属性,因此在student表中增加一个属性sselnum(smallint)l在实际应用l实例展示第2页/共28页23:01触发器概述考虑该问题涉及两个表之间的关系,可否用参照完整性来实现考虑该问题涉及两个表之间的关系,可否用参照完整性来实现?l可否用嵌套的SQL语句来实现?l问题的解决:使用触发器triggerlupdate student set sselnum=(select count(*)from s_c where s_c.sno=student.sno)l存在的问题l触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性 第3页/共28页23:01触发器概述触发器的概念触触发发器器是是一一种种特特殊殊类类型型的的存存储储过过程程。在在SQL SQL ServerServer里里面面也也就就是是对对某某一一个个表表的一定的操作,触发某种条件,从而执行的一段程序。的一定的操作,触发某种条件,从而执行的一段程序。l 触发器触发原因对表进行插入、更新或删除操作触发事件。l 触发结果:另一段程序的执行。l 思考:在上例中,触发原因是什么?触发结果是什么?第4页/共28页23:01触发器概述l 触发器和存储过程的区别:INSERT INTO s_c VALUES(95001,006,90)EXEC Getgrade 95001l 触发器可以用于 SQL Server 约束、默认值和规则的完整性检查。触发器主要是通过事件触发而执行的,而存储过程是通过调用存储过程名称而执行的。第5页/共28页23:01触发器概述特殊性在于:l它与表紧密相连,不可以脱离表单独存在。l不允许使用参数,没有返回值。l不允许用户调用,当对表进行插入、删除、修改操作时由系统自动调用并执行(相当于事件方法)。第6页/共28页23:01触发器概述触发器可以实现比较复杂的完整性约束:l扩展约束、默认值和规则对象的完整性检查。l自动生成数据。l检查数据的修改,防止对数据不正确的修改,保证数据表之间数据的正确性和一致性。l自定义复杂的安全权限。触发器作为一种数据库对象,在syscomment系统表中存储其完整的定义信息,在sysobject系统表中有该对象的记录。第7页/共28页23:01触发器概述1)触发器自动执行 在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。3)触发器可以实现比CHECK约束更为复杂的数据完整性约束 在数据库中为了实现数据完整性约束,可以使用CHECK约束或触发器。CHECK约束不允许引用其它表中的列来完成检查工作,而触发器可以引用其它表中的列。2)触发器能够对数据库中的相关表实现级联更改 触发器是基于一个表创建的,但是可以针对多个表进行操作,实现数据库中相关表的级联更改。第8页/共28页23:01触发器概述AFTER类型触发器:只有执行某一操作(INSERT UPDATE DELETE)之后,触发器才被触发。只能在表上定义。触发器的分类lINSTEADOF触发器:l并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。l既可在表上定义INSTEADOF触发器,也可以在视图上定义INSTEADOF触发器。第9页/共28页23:01触发器概述触发器的原理Inserted表和Deleted表的理解:Inserted和Deleted是逻辑(概念)表。当在定义了触发器的表上发生了修改操作时会自动派生出这两个视图。当在表上发生插入操作时,新插入的行将出现在插入视图中。当在表上发生删除操作时,被删除的行将出现在删除视图中。当在表上发生更新操作时,旧行出现在删除视图中,新行出现在插入视图中。第10页/共28页23:01触发器概述触发器的原理Inserted表和Deleted表的理解:(1)如果基于S_C表的UPDATE操作定义了触发器 (2)再执行语句:UPDATE S_C SET grade=70 WHERE sno=95001 AND cno=001 在UPDATE语句执行过程中 Deleted表的内容:Inserted表的内容:S_C表第11页/共28页23:01触发器的创建v触发器的基本操作创建在创建触发器前,必须注意以下几点:1、CREATE TRIGGER 语句必须是批处理中的第一条语句。2、只能在当前数据库中创建触发器,名称必须遵循标识符的命名规则。3、表的所有者具有创建触发器的默认权限,不能将该权限转给其他用户。4、不能在临时表或系统表上创建触发器,但是触发器可以引用临时表,但是不能引用系统表。第12页/共28页23:01触发器的创建创建触发器命令格式:CREATETRIGGERtrigger_nameONtabelFOR|AFTER|INSTEADOFINSERT,UPDATE,DELETEASIFUPDATE(column)AND|ORUPDATE(column)sql_statement一、企业管理器二、查询分析器第13页/共28页23:01触发器的创建说明:vFOR|AFTER|INSTEAD OF:FOR|AFTER:在数据变动以后触发;INSTEAD OF:在数据变动以前触发;vINSERT|UPDATE|DELETE:分别对应插入触发器、修改触发器、删除触发器第14页/共28页23:01触发器的创建例:当在仓库表上发生插入操作时会输出“插入了一个仓库元组”的信息。USE仓库管理GOCREATETRIGGERWH_INON仓库FORINSERTASPRINT插入了一个仓库元组INSERT仓库VALUES(WH6,南京,700)第15页/共28页23:01触发器的创建例:在仓库表上定义一个删除触发器,使得当删除仓库记录时,同时将所属所有职工记录的仓库号字段值置为空值NULL。CREATETRIGGERWH_DELON仓库FORDELETEASUPDATE职工SET仓库号=NULLWHERE仓库号IN(SELECT仓库号FROMdeleted)DELETE仓库WHERE仓库号=WH6仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)第16页/共28页23:01触发器的创建例:对S表定义一个删除触发器,使得当删除学生记录时,将S_C表中相应的选课记录删除。S(SNO,SNAME)S_C(SNO,CNO,SCORE)第17页/共28页23:01触发器的创建例:对职工表定义一个插入触发器,使得当插入职工记录时,检查所参照的仓库元组是否存在,如果不存在,则撤消所做的插入操作。仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)第18页/共28页23:01触发器的创建CREATETRIGGERWH_INSON职工FORINSERTASIFNOTEXISTS(SELECT*FROM仓库WHERE仓库号=(SELECT仓库号FROMINSERTED)BEGINRAISERROR(非法仓库号!,1,1)ROLLBACKTRANSACTIONENDINSERT职工VALUES(WH5,E10,1600)IN第19页/共28页23:01触发器的创建例:对S_C表定义一个插入触发器,使得当插入选课记录时,检查所参照的学生学号和课程号是否存在,如果不存在,则撤消所做的插入操作。S(SNO,SNAME)C(CNO,CNAME)S_C(SNO,CNO,SCORE)第20页/共28页23:01触发器的创建例:对职工表定义一个更新触发器,使得当职工变换所属仓库时,检查所参照的仓库元组是否存在,如果不存在,则撤消所做的更新操作,如果新的仓库号是WH2则将工资提高10%。第21页/共28页23:01触发器的创建CREATETRIGGERTR_UPDATEON职工FORUPDATEASDECLAREWHNOCHAR(4)IFUPDATE(仓库号)BEGINIFNOTEXISTS(SELECT*FROM仓库WHERE仓库号=(SELECT仓库号FROMINSERTED)BEGINRAISERROR(非法仓库号!,16,1)ROLLBACKTRANSACTIONENDELSEBEGINSELECTWHNO=仓库号FROMINSERTEDIFWHNO=WH2UPDATE职工SET工资=工资*1.1WHERE职工号=(SELECT职工号FROMINSERTED)ENDEND第22页/共28页23:01触发器的创建例:当插入或更新学生成绩时,触发器检查该课程是否为考查课,若是,则通过的成绩只能以60分计,未通过的只能以40分计。涉及的表结构:C1(Cno,Cname,Ctype)S_C(Sno,Cno,Score)第23页/共28页23:01触发器的创建CREATETRIGGERSCORE_KCONS_CFORINSERT,UPDATEASDECLARESCOREINT,CTYPECHAR(4)SELECTSCORE=SCORE,CTYPE=CTYPEFROMC1,INSERTEDWHEREINSERTED.CNO=C1.CNOIF(CTYPE=考查)AND(SCORE60ANDSCORE40)BEGINRAISERROR(该课程为考查课,成绩以60或40计!,16,1)ROLLBACKTRANSACTIONEND第24页/共28页23:01触发器的创建CREATETRIGGERSCORE_KCONS_CFORINSERT,UPDATEASDECLARESCOREINT,CTYPECHAR(4)SELECTSCORE=SCORE,CTYPE=CTYPEFROMC1,INSERTEDWHEREINSERTED.CNO=C1.CNOIF(CTYPE=考查)BEGINIFSCORE=60UPDATES_CSETSCORE=60WHERECNO=(SELECTCNOFROMINSERTED)ANDSNO=(SELECTSNOFROMINSERTED)ELSEUPDATES_CSETSCORE=40WHERECNO=(SELECTCNOFROMINSERTED)ANDSNO=(SELECTSNOFROMINSERTED)END第25页/共28页23:01触发器的修改修改触发器命令格式:ALTER TRIGGER trigger_name ON tabel FOR|AFTER|INSTEAD OF INSERT,UPDATE,DELETE AS IF UPDATE(column)AND|OR UPDATE(column)sql_statement 第26页/共28页23:01触发器的删除删除触发器命令格式:DROP TRIGGER trigger-name例:删除SCORE_KC触发器。DROP TRIGGER SCORE_KC第27页/共28页23:01感谢您的观看。第28页/共28页

    注意事项

    本文(数据库触发器.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开