我想知道在插入更新另一个表中的列后是否可以在视图上创建触发器?以下是我写的一个例子。
查看名称: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“
还有一些研究表明,你不能在视图上使用标准触发器,并且有一种解决方法,而不是它是什么。
答案 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