2013-11-01 54 views
0

我試圖找到DB2的行和語句觸發器之間的區別,但我仍然不太明白:)如果我有一個情況,對於特定表中的每個更新列,該列的名稱將記錄在另一個LOG錶行中。因此,如果我使用行觸發器,那麼對於更新錶行的事務中的每一行,都會觸發觸發器。在語句觸發器中,如果對該表更新了10行,那麼更新觸發器只會啓動一次?如果是這樣,聲明觸發器的行爲仍然與行觸發器的行爲相同,只是更優化?DB2 9.7語句與行觸發器

在行觸發器中,我明白訪問DELETED或INSERTED參數我可以得到一個指向更新行的指針。但是語句觸發器呢? DELETED和INSERTED參數是否包含特定列的所有行的列表?

回答

1

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

在本節中,你會發現當trigger fires

當觸發器被激活,它根據 粒度的級別,如下所示運行在信息:

FOR EACH ROW

它的運行次數與受影響的行集合中的行數相同。如果您需要引用受觸發操作影響的特定行,請使用FOR EACH ROW粒度。一個示例是 UPDATE觸發器中更新行的新值和舊值的比較。

FOR EACH STATEMENT

它爲整個觸發事件運行一次。

如果這組受影響的行是空的(也就是說,在案件的 搜索UPDATE或DELETE中的WHERE子句沒有資格 任何行),針對每個行觸發器不運行。但一個FOR EACH STATEMENT觸發器仍然運行一次。

您還會看到如何訪問舊的和新的數據或者by row或完整table at once