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



我想知道是否可以在插入后在视图上创建一个触发器来更新另一个表中的列?下面是我写的一个例子。

视图名称: VMC_FWD2

表名:TLORDER

CREATE OR REPLACE TRIGGER QA_TRACE_NUM_INSERT_OI
AFTER INSERT ON VMC_FWD2
REFERENCING NEW ROW AS N
FOR EACH ROW
MODE DB2SQL 
BEGIN ATOMIC 
update tlorder set user4 = n.status where bill_number = n.number;
END

但是,这会产生错误:

[

IBM][CLI 驱动程序][DB2/NT64] SQL0156N 用于此操作的名称不是表。行号=2。SQLSTATE=42809"

更多的研究表明,您不能在视图上使用标准触发器,并且有一种解决方法,只是不是它是什么。

视图仅支持INSTEAD OF触发器,因此您的视图看起来像

CREATE OR REPLACE TRIGGER QA_TRACE_NUM_INSERT_OI
INSTEAD OF INSERT ON VMC_FWD2
...  -- skipped other declaration lines
BEGIN ATOMIC 
  update tlorder set user4 = n.status where bill_number = n.number;
END

最新更新