网络数据库课件第9章_第1页
网络数据库课件第9章_第2页
网络数据库课件第9章_第3页
网络数据库课件第9章_第4页
网络数据库课件第9章_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章,触发器,Name:马江平Tel65726Email:129584QQ:129584,辽宁工程技术大学营销管理学院,回顾,代码阅读,下列系统存储过程的功能是:EXECsp_helpconstrainttblstudentEXECsp_helpindextblscoreEXECsp_renamedbstudent,student1EXECxp_cmdshellmkdird:abc存储过程的参数分为哪两类?,代码阅读:指出下列语句的错误createprocproc_studentstud_namevarchar(10),mintoutput,age=18intas.代码略godeclaresintEXECproc_student曹操,s,30EXECproc_student曹操,sEXECproc_studentAge=22,stud_name=刘备,m=soutput,AgeINT=18,EXECproc_student曹操,sOUTPUT,30,EXECproc_student曹操,sOUTPUT,正确,回顾,本章目标,了解为什么需要触发器理解触发器的工作原理掌握如何使用inserted表和deleted表掌握如何创建:INSERT触发器UPDATE触发器DELETE触发器,为什么需要触发器(TRIGGER)呢?典型的应用就是银行的取款机系统,为什么需要触发器,交易信息表transInfo,帐户信息表bank,曹操取钱200问题:没有自动修改曹操的余额,曹操开户10000元,刘备开户1元,最优的解决方案就是采用触发器:它是一种特殊的存储过程也具备事务的功能它能在多表之间执行特殊的业务规则,T-SQL语句命令行为:updatetblclasssetclass_num=(selectcount(stud_id)fromtblstudentwheretblstudent.class_id=tblclass.class_id)这是一个相关子查询。如果我们希望能够自动实现这样的能力,只能用触发器实现。,示例9.1,小乔,插入,什么是触发器,删除,触发器触发,小乔转学,小乔,学生表,转学表,触发器是在对表进行插入、更新或删除操作时自动执行的存储过程触发器通常用于强制业务规则触发器是一种高级约束,可以定义比用check约束更为复杂的约束可执行复杂的SQL语句(if/while/case)可引用其它表中的列,什么是触发器,触发器定义在特定的表上,与表相关自动触发执行不能直接调用是一个事务(可回滚),什么是触发器,DELETE触发器INSERT触发器UPDATE触发器,触发器类型,触发器触发时:系统自动在内存中创建deleted表或inserted表只读,不允许修改;触发器执行完成后,自动删除inserted表临时保存了插入或更新后的记录行可以从inserted表中检查插入的数据是否满足业务需求如果不满足,则向用户报告错误消息,并回滚插入操作deleted表临时保存了删除或更新前的记录行可以从deleted表中检查被删除的数据是否满足业务需求如果不满足,则向用户报告错误消息,并回滚删除操作,inserted和deleted表,inserted和deleted表,inserted表和deleted表存放的信息,SQLServer管理平台创建触发器,创建触发器的语法:,T-SQL语句创建触发器,CREATETRIGGERtrigger_nameONtable_nameWITHENCRYPTIONFORDELETE,INSERT,UPDATEAST-SQL语句GO,WITHENCRYPTION表示加密触发器定义的SQL文本FOR等同于AFTERDELETE,INSERT,UPDATE指定触发器的类型,示例9.1,T-SQL语句创建插入触发器,T-SQL语句创建插入触发器,插入不成功,违反外键约束!,插入仍不成功,违反外键约束!触发器没有工作!,T-SQL语句创建插入触发器,插入不成功,外键约束虽然禁止!但触发器又工作,检测到课程表中没有该课程名,执行语句中止!,插入成功,外键约束禁止!触发器工作,检测到课程表中有该课程名,语句被执行!,示例9.2,示例9.2答案,T-SQL语句创建插入触发器,示例9.3,T-SQL语句创建删除触发器,T-SQL语句创建删除触发器,删除不成功,违反表tblscore外键约束!,删除仍不成功,违反表tblscore外键约束!触发器没有工作!,T-SQL语句创建删除触发器,删除成功,外键约束虽然禁止!但触发器工作,,示例9.4,T-SQL语句创建更新触发器,修改不成功,tblscore外键约束工作!但触发器不工作。如何使其能正常工作呢?,T-SQL语句创建列级触发器,createtriggeronforinsert,updatewithencryptionasifupdate(列名)-判断指定的某列是否经过了修改SQL语句,创建列级触发器语法结构:,示例9.5,T-SQL语句创建列级触发器,示例9.6,T-SQL语句创建列级触发器,T-SQL语句创建列级触发器,T-SQL语句创建列级触发器,SQLServer管理平台删除触发器,T-SQL语句删除触发器,droptrigger,.n,删除触发器语法结构:,示例9.7,T-SQL语句删除级触发器,示例9.7答案,触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACKT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论