DB2:忽略更新触发器中的列

Posted

技术标签:

【中文标题】DB2:忽略更新触发器中的列【英文标题】:DB2: Ignore Column in Update Trigger 【发布时间】:2015-10-15 17:02:58 【问题描述】:

我正在尝试在 DB2 中编写一个触发器,它会在更新表中的所有列时触发,但只有一个列。我正在寻找一种方法来“忽略”触发器中的列。我需要的是类似于以下 sn-p 的东西(如 SQL Server 的here 所述):

IF NOT (UPDATE(column_1)) 
BEGIN
...
END

如果我正确理解 DB2 触发器语法 (link),这在 DB2 中是不可能的。

摘录:

>--+-INSERT--------------------------+--ON--+-table-name-+------>
   +-DELETE--------------------------+      '-view-name--'   
   '-UPDATE--+---------------------+-'                       
             |     .-,-----------. |                         
             |     V             | |                         
             '-OF----column-name-+-' 

我最终做的只是列出同一张表的所有其他列(因此,选择加入而不是退出):

UPDATE OF column_2, column_3, column_4

但是,我想知道是否有更好的方法来做到这一点。我使用的是 DB2 8.2,但如果有在未来版本中有效的解决方案,我也会有兴趣了解它。希望有一天我们会升级。谢谢!

【问题讨论】:

【参考方案1】:

为了完整性和其他有相同问题的人,我不得不提到问题中描述的解决方法确实是要走的路。 DB2 语法不允许您排除(忽略)单个列。

【讨论】:

以上是关于DB2:忽略更新触发器中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 DB2 中的递归触发器调用

创建一个触发器,当另一个表中的列更新时更新一个表上的列

db2中的SP是不是等待触发器执行

检测 postgres 更新触发器中的列更改

如何在更新单独表中的列的视图上创建触发器?

插入后使用 SQL Server 触发器更新另一个表中的列