【问题标题】:DB2 9.7 statement vs row triggersDB2 9.7 语句与行触发器
【发布时间】:2013-11-01 19:16:57
【问题描述】:

我试图找出 DB2 的行触发器和语句触发器之间的区别,但我仍然不太明白 :) 如果我有一个案例,对于特定表中的每个更新列,列的名称是登录另一个 LOG 表行。因此,如果我使用行触发器,那么对于事务中更新该表行的每一行,都会启动触发器。在语句触发器中,如果为该表更新了 10 行,那么更新触发器只启动一次?如果是这样,语句触发器的行为是否仍然与行触发器相同,只是更优化?

在行触发器中,我知道访问 DELETED 或 INSERTED 参数可以获得指向更新行的指针。但是语句触发器呢? DELETED 和 INSERTED 参数是否包含特定列的所有行的列表?

【问题讨论】:

    标签: triggers db2


    【解决方案1】:

    您可能想查看信息中心中designing triggers 的部分。

    在本节中,您将找到有关 trigger fires 何时出现的信息,

    当触发器被激活时,它会根据它的级别运行 粒度如下:

    每一行

    它运行的次数与受影响行集中的行数一样多。如果您需要参考受 触发动作,使用 FOR EACH ROW 粒度。这方面的一个例子是 AFTER 中更新行的新旧值的比较 更新触发器。

    对于每个声明

    它为整个触发事件运行一次。

    如果受影响的行集是空的(也就是说,在 搜索了 WHERE 子句不符合条件的 UPDATE 或 DELETE 任何行),FOR EACH ROW 触发器不会运行。但是一个 FOR EACH STATEMENT 触发器仍然运行一次。

    您还将了解如何访问by row 或完整的table at once 的旧数据和新数据。

    【讨论】:

      猜你喜欢
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2020-03-10
      • 1970-01-01
      • 2021-02-25
      相关资源
      最近更新 更多