网站大量收购独家精品文档,联系QQ:2885784924

[工学]第八章1触发器.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第八章1触发器

在本章中,你将学到: 实现触发器 触发器有以下类型: DML 触发器 DDL 触发器 在SQL Server 2005里,可以用两种方法来保证数据的有效性和完整性:约束(check)和触发器(Trigger)。约束是直接设置于数据表内,只能现实一些比较简 单的功能操作,如:实现字段有效性和唯一性的检查、自动填入默认值、确保字段数据不重复(即主键)、确保数据表对应的完整性(即外键)等功能。 触发器是针对数据表(库)的特殊的存储过程,当这个表发生了 Insert、Update或Delete操作时,会自动激活执行的,可以处理各种复杂的操作。在SQL Server 2005中,触发器有了更进一步的功能,在数据表(库)发生Create、Alter和Drop操作时,也会自动激活执行 触发器常用的一些功能如下 : 1 完成比约束更复杂的数据约束:触发器可以实现比约束更为复杂的数据约束 2 检查所做的SQL是否允许:触发器可以检查SQL所做的操作是否被允许。例如:在产品库存表里,如果要删除一条产品记录,在删除记录时,触发器可以检查该产品库存数量是否为零,如果不为零则取消该删除操作。 3修改其它数据表里的数据:当一个SQL语句对数据表进行操作的时候,触发器可以根据该SQL语句的操作情况来对另一个数据表进行操作。例如:一个订单取消的时候,那么触发器可以自动修改产品库存表,在订购量的字段上减去被取消订单的订购数量。 4 调用更多的存储过程:约束的本身是不能调用存储过程的,但是触发器本身就是一种存储过程,而存储过程是可以嵌套使用的,所以触发器也可以调用一个或多过存储过程。 5 更改原本要操作的SQL语句:触发器可以修改原本要操作的SQL语句,例如原本的SQL语句是要删除数据表里的记录,但该数据表里的记录是最要记录,不允许删除的,那么触发器可以不执行该语句。 6 防止数据表构结更改或数据表被删除:为了保护已经建好的数据表,触发器可以在接收到Drop和Alter开头的SQL语句里,不进行对数据表的操作。 复杂商业规则必须实现的时候,需要触发器。当约束被使用来维护参考完整性的时候,触发器也被使用 . 触发器是一种特殊类型的存储过程,但不能被显式执行。也说明触发器包含的开销是很高的,但提供的功能也非常有用 触发器不能在系统表上创建。触发器不像存储过程,不能返回值或结果集 DML触发器 由SQL Server自动触发无论何时数据修改语句被提交的时候 不能被显示地调用 防止错误,未授权和数据的不一致变更 不能返回数据给用户 可以被嵌套最高32层。当触发器完成一个激发其他触发 器的 动作的时候嵌套触发器发生。 SQL Server 2005的DML触发器分为两类: 1 After 触发器:是在DML操作完成后, 才被激活的,主要用于记录变更后的处理和检查,一旦错误,可以使用rollback transaction语句来回滚. 2 Instead触发器:这类触发器一般是用在记录变更之前发生的,它并不去执行原来SQL语句里的操作(Insert, Update, Delete), 而转去执行触发器本身定义的操作. 当DML触发器被响应的时候,SQL SERVER 创建魔表,分为已插入的和已删除的,其结构与定义触发器的表类似,这两个表是建在服务器内存中的,是由系统管理的逻辑表, 不是真正存储在数据库中的物理表, 对于这两个表, 用户只有读取的权限, 没有修改的权限. 插入触发器 删除触发器 串联方法:主表数据删除 依赖表数据删除 限制方法:相关记录在依赖表中出现,那么限制从主表删除记录 无效方法:从主表中删除, 在依赖表中的特定列置为无效 更新触发器 After触发器是在记录更变完之后才被激活执行的。以删除记录为例:当SQL Server接收到一个要执行删除操作的SQL语句时,SQL Server先将要删除的记录存放在删除表里,然后把数据表里的记录删除,再激活After触发器,执行After触发器里的SQL语句。执行完毕之后, 删除内存中的删除表,退出整个操作。 After触发器是在记录更变完之后才被激活执行的。以删除记录为 例:当SQL Server接收到一个要执行删除操作的SQL语句时,SQL Server先将要删除的记录存放在删除表里,然后把数据表里的记录删除,再激活After触发器,执行After触发器里的SQL语句。执行完毕之后, 删除内存中的删除表,退出整个操作。 (1)接收SQL语句,将要从产品库存表里删除的产品

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档