我试图找到DB2的行和语句触发器之间的区别,但我仍然不太明白:)如果我有一个案例,对于特定表中的每个更新列,列的名称是登录到另一个LOG表行。因此,如果我使用行触发器,那么对于更新该表行的事务中的每一行,都会启动触发器。在语句触发器中,如果为该表更新了10行,则更新触发器仅启动一次?如果是这样,语句触发器的行为方式是否与行触发器相同,只是更优化?
在行触发器中,我理解访问DELETED或INSERTED参数我可以获得指向更新行的指针。但是语句触发怎么办? DELETED和INSERTED参数是否包含特定列的所有行的列表?
答案 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的旧数据和新数据。