2016-12-27 139 views
0

我們有以下要求。db2列級觸發器

TableName:Items; ColumnName:id,isActivated
TableName:DeactivatedItems; ColumnName:id,timestamp

無論何時'id'被取消激活,我們需要在'DeactivatedItems'表中用'id'和時間戳創建一個條目。

爲此,我們希望在DB2中使用columnlevel觸發器。 實際上,除了'Items'表的id,isActivated列之外,我們還有更多的列。

我有以下問題。
鑑於表中有很多列,對其他列的更新是否也會調用此觸發器?如果是的話,是否有任何限制的方法。

另外,給定觸發器的「事務」性質是什麼。如果觸發器調用失敗,是否也會回滾更新操作。

在此先感謝!

+1

您是否嘗試過閱讀文檔的'CREATE語句TRIGGER'?你發現了什麼? –

+0

如果失敗,則失敗返回給進行更新的用戶。取決於你的行爲如何回擊。但是,如果您指定要插入的表的庫/文件並使事情簡單化,它將永遠不會失敗。 – danny117

回答

1

是列觸發器只在列更新時觸發。包括一個時間子句的防彈解決方案。

CREATE TRIGGER danny117t AFTER UPDATE OF isActivated ON mytable 

REFERENCING OLD AS O NEW AS N 
FOR EACH ROW MODE DB2SQL 
--detect change to '0' 
WHEN (N.isactivated = '0' and o.isactivated <> '0') 
BEGIN ATOMIC 
--I hope you can take it from here 
insert into somefile values(n.id); 

END;