我做了一个更新后的触发器,我打算用它作为审计日志来更改源表中的主记录。一切都按预期工作,除非我查看触发器的定义,我可以看到它解决了MYLIB.NMF00PAUDI和OTBL的所有列,这意味着我必须为我添加到源表和审计表中的每一列重新创建此触发器。
我可以以某种方式保留SELECT *吗?这样我只需要修改源表和审计表。
CREATE TRIGGER MYLIB.NMF00PAUDIT
AFTER UPDATE ON MYLIB.NMF00P
REFERENCING OLD_TABLE AS OTBL
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
INSERT INTO MYLIB . NMF00PAUDI
SELECT * FROM OTBL
;
END
当我查看定义时成为这个:
BEGIN ATOMIC
INSERT INTO MYLIB . NMF00PAUDI (COL1, COL2, COL3)
SELECT COL1, COL2, COL3 FROM OTBL
;
END
答案 0 :(得分:1)
您是否可以自动创建触发器定义(使用花哨的文本模板工具,甚至只是一个简单的脚本),可以从sysibm.syscolumns中找到列并使用所有当前列生成触发器主体?然后,只要表架构发生更改,您只需重新生成脚本并重新应用触发器以覆盖新字段。