sql实现触发器PPT课件_第1页
sql实现触发器PPT课件_第2页
sql实现触发器PPT课件_第3页
sql实现触发器PPT课件_第4页
sql实现触发器PPT课件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

实现数据完整性之触发器,触发器是一种特殊的存储过程,它在执行语言事件执行时自动生效。SQLServer包括两大类触发器:DML触发器和DDL触发器。DDL触发器是SQLServer2005的新增功能。当服务器或数据库中发生数据定义语言(DDL)事件时将调用这些触发器。当数据库中发生数据操作语言(DML)事件时将调用DML触发器。DML事件包括在指定表或视图中修改数据的INSERT语句、UPDATE语句或DELETE语句。,DML触发器,当执行INSERT,UPDATE或者DELETE语句修改指定表时执行两类触发器:AFTER触发器在执行INSERT、UPDATE或DELETE语句的操作之后执行。INSTEADOF触发器代替INSERT,UPDATE或DELETE语句执行触发器和初始化语句是一个事务的一部分DML触发器的主要优点在于它们可以包含使用Transact-SQL代码的复杂处理逻辑。,INSERT触发器的工作方式,CREATETRIGGERinsrtWorkOrderONProduction.WorkOrderAFTERINSERTASBEGINSETNOCOUNTON;INSERTINTOProduction.TransactionHistory(ProductID,ReferenceOrderID,TransactionType,TransactionDate,Quantity,ActualCost)SELECTinserted.ProductID,inserted.WorkOrderID,W,GETDATE(),inserted.OrderQty,0FROMinserted;End,执行INSERT语句,1,执行AFTERINSERT触发器语句,3,记录INSERT语句,2,CREATETRIGGERdelCustomerONSales.CustomerAFTERDELETEASBEGINSETNOCOUNTON;EXECmaster.xp_sendmailrecipients=NSalesManagersAdventure-W,message=NCustomershavebeendeleted!;END;,DELETE触发器的工作方式,执行DELETE语句,执行AFTERDELETE触发器语句,记录DELETE语句,1,3,2,CREATETRIGGERupdtProductReviewONProduction.ProductReviewAFTERUPDATENOTFORREPLICATIONASBEGINUPDATEProduction.ProductReviewSETProduction.ProductReview.ModifiedDate=GETDATE()FROMinsertedWHEREinserted.ProductReviewID=Production.ProductReview.ProductReviewID;END;,UPDATE触发器的工作方式,执行UPDATE语句,执行AFTERUPDATE触发器语句,记录UPDATE语句,1,3,2,临时表Inserted和Deleted,DML触发器语句使用两种特殊的表:删除的表(Deleted)和插入的表(Inserted)。SQLServer2005会自动创建和管理这两种表。,删除的表(Deleted)用于存储DELETE和UPDATE语句所影响的行的副本。在执行DELETE或UPDATE语句的过程中,行从触发器表中删除,并传输到删除的表中。删除的表和触发器表通常没有相同的行。,插入的表(Inserted)用于存储INSERT和UPDATE语句所影响的行的副本。在插入或更新事务期间,新行将同时被添加到插入的表和触发器表。插入的表中的行是触发器表中的新行的副本。更新事务类似于在删除操作之后执行插入操作;首先,旧行被复制到删除的表中,然后,新行被复制到触发器表和插入的表中。,CREATETRIGGERdelEmployeeONHumanResources.EmployeeINSTEADOFDELETENOTFORREPLICATIONASBEGINSETNOCOUNTON;DECLAREDeleteCountint;SELECTDeleteCount=COUNT(*)FROMdeleted;IFDeleteCount0BEGINEND;END;,INSTEADOF触发器的工作方式,执行UPDATE,INSERT,或者DELETE语句,执行INSTEADOF触发器语句,未执行语句,1,3,2,嵌套触发器的工作方式,INSERT,UPDATE,或者DELETE语句,触发器在另一张表上执行INSERT,UPDATE或者DELETE,1,2,3,等等,递归触发器的注意事项,启用递归触发器:注意事项:没有详细的设计和测试,可以查过32级的嵌套限制很难控制表更新的顺序能够被非递归逻辑取代,ALTERDATABASEAdventureWorksSETRECURSIVE_TRIGGERSON,DDL触发器,与DML触发器不同,DDL触发器不会为响应针对表或视图的UPDATE、INSERT或DELETE语句而激发。响应多种数据定义语言(DDL)语句而激发。主要是以CREATE、ALTER和DROP开头的语句。DDL触发器可用于管理任务,例如审核和控制数据库操作。,数据库作用域服务器作用域在响应当前数据库或服务器中处理的Transact-SQL事件时,将激发DDL触发器。触发器的作用域取决于事件(数据库作用域事件和服务器作用域事件)。每个事件都对应一个Transact-SQL语句,语句语法经过修改,在关键字之间包含了下划线(“_”)。,DDL触发器的作用域,防止对数据库架构进行某些更改。数据库中发生某种情况以响应数据库架构中的更改。记录数据库架构中的更改或事件。仅在运行触发DDL触发器的DDL语句后,DDL触发器才会激发。DDL触发器无法作为INSTEADOF触发器使用。,DDL触发器主要作用,CREATETRIGGERsafetyONDATABASEFORDROP_TABLE,ALTER_TABLEASPRINTYoumustdisableTriggersafetytodroporaltertables!ROLLBACK;,CREATETRIGGERddl_trig_loginONALLSERVERFORDDL_LOGIN_EVENTSASP

温馨提示

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

评论

0/150

提交评论