2016-12-27 138 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;