e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> DB2教程 >> INSTEAD OF 触发器 >> 教程正文
 
教程搜索
 
 
相关教程
  • 数据挖掘器: 警告 — 及时采取行动
  • UNIX、Linux 和 Windows 的生动简介
  • “总览图”: IBM DB2 通用数据库和信息
  • DB2 大事记
  • 数据管理部门副总裁兼 CTO:Don Hader
  • IBM 联邦数据库技术
  • 唐纳德.海德勒(Donald J. Haderle)
  • 数据库未来展望
  • 哪一个分布式 DB2 UDB V8 版本适合您?
  • 从数据管理到信息集成: 自然的演变
  • 联邦 - 数据库互操作性(第 1 部分)
  • 成功是必然的(中)
  • 成功是必然的(上)
  • 成功是必然的(下)
  • DB2 信息集成: 总览图
  • IBM 杰出工程师兼信息集成主管 Nelson
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
INSTEAD OF 触发器
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
  • 避免递归的 AFTER 触发器。

    有时候碰巧 AFTER 触发器必须更新它自己的主题表,在极端的情况下,这可以使可用的语句堆变得紧张并增加语句的编译时间。对主题表使用视图和创建 INSTEAD OF 触发器可以允许对主题表进行多次更新,不会引起视图的递归触发。

  • 实现外部表。

    为使表 UDF 也拥有插入、更新和删除功能,您可能想扩展对表 UDF 的现有读访问权。定义特定于插入、更新和删除的 UDF 是切实可行的。然后您可以在表 UDF 上创建一个视图并定义 INSTEAD OF 触发器以驱动其它 UDF。

  • 使 WebSphere® MQ 看起来象一张表。

    这可能类似于上面的外部表示例,但是它具有 WebSphere MQ 函数。

  • 注意事项

    我们尝试了许多使用 INSTEAD OF 触发器的示例,但是我们还没有谈到它们的限制。现在让我们来谈一谈。

    对称视图

    由于 INSTEAD OF 触发器上所具有的无法控制的语义,所以您不能在对称视图上创建 INSTEAD OF 触发器。对称视图所接受的行必须可以由该视图返回。此外,不能在拥有 INSTEAD OF 触发器的视图上面创建对称视图。

    可更新游标

    目前在可更新游标的上下文中不支持 INSTEAD OF 触发器。这意味着如果定位更新或定位删除分别造成 INSTEAD OF UPDATE 或 INSTEAD OF DELETE 触发器触发,那么该操作将失败。

    警告

    触发器的触发顺序

    INSTEAD OF 触发器被认为是和 AFTER 触发器一起触发的。这意味着如果对 UNION ALL 视图进行更新或删除造成 INSTEAD OF 触发器和/或 AFTER 触发器的触发,那么整组触发器将按照触发器创建时间的先后顺序进行触发。

    触发器和约束处理

    和 AFTER 触发器一样,INSTEAD OF 触发器主体中的 SQL 语句是完整的语义实体。这意味着:举个例子,INSTEAD OF 触发器内的 UPDATE 语句将造成各自的检查约束、RI 约束和触发器在下一个语句之前触发,最终处理转换表中的下一行。

    GET_DIAGNOSTICS ROW_COUNT(又名 SQLCA.ERRD(3))

    在 DB2 V8 之前,通过视图修改的行数始终等于直接在基本表上更新的行数,此处“直接”意味着不包括通过触发器和删除级联 RI 约束修改的行。有了 INSTEAD OF 触发器,这就不再成立了,而且 ROW_COUNT 的含义需要细化。DB2 V8 中的 ROW_COUNT 指定了符合进行用户所给定的更新、删除或插入操作条件的行数。对于进行这类操作的 INSTEAD OF 触发器,这个行数转换成了执行该触发器的次数和转换表的基数。

    可能的改进

    从 SQL 语言的角度来看,INSTEAD OF 触发器引起了一些有趣的问题和选择。例如:

    视图级缺省值

    由于 INSTEAD OF 触发器将视图查询的语义与其插入、删除和更新行为完全分离,因此仅从底层表派生出的缺省值似乎不再是足够的了。考虑到具有显式列缺省值(甚至可能有标识列特性)的视图似乎比较明智。

    语句级 INSTEAD OF 触发器

    虽然如今 DB2 只支持行级 INSTEAD OF 触发器,但是有各种各样的示例说明语句级 INSTEAD OF 触发器也可能很有用。例如,我们在上面的一个示例中所讨论的异常表触发器如果一次处理一组行而不是每一行,那么肯定会获得更好的性能。

    为何视图上只有 INSTEAD OF 触发器?

    我们已经介绍了视图中的一种触发器,为何就此罢手了呢?BEFORE、AFTER 触发器甚至 IDENTITY 可能是其它值得介绍的触发器。

    结束语

    在本文中我们讨论了可更新视图的功能和限制。我们介绍了允许您将任何视图转变成可更新视图的 INSTEAD OF 触发器,并发现了用于分布式平台的 DB2 V8 中的这种功能的各种应用。


    上一页  1 2 3 4 5 6 
  • 上一篇教程: Terry Purcell 谈外连接(第二部分)
  • 下一篇教程: 使用连接的应用程序标识
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.