DB2 9.7语句与行触发器

时间:2013-11-01 19:16:58

标签: triggers db2

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

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

1 个答案:

答案 0 :(得分:1)

您可能需要查看designing triggers上信息中心中的部分。

在本节中,您将找到有关何时trigger fires

的信息
  

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

     

FOR EACH ROW

     

它的运行次数与受影响行集中的行数相同。如果需要引用受影响的特定行   触发操作,使用FOR EACH ROW粒度。这方面的一个例子是   AFTER中更新行的新旧值的比较   UPDATE触发器。

     

每个声明

     

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

     

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

您还会看到如何访问{3}}或完整by row的旧数据和新数据。