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

时间:2017-01-05 19:36:21

标签: sql triggers db2

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

查看名称: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

world.step(Gdx.graphics.getDeltaTime(), 6, 2);

然而,这会产生错误:

  

[IBM] [CLI驱动程序] [DB2 / NT64] SQL0156N此操作使用的名称不是表。 LINE NUMBER = 2。 SQLSTATE = 42809“

还有一些研究表明,你不能在视图上使用标准触发器,并且有一种解决方法,而不是它是什么。

1 个答案:

答案 0 :(得分:1)

视图仅支持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