DB2 Trigger OLD_TABLE动态列

时间:2016-06-09 11:13:25

标签: db2

我做了一个更新后的触发器,我打算用它作为审计日志来更改源表中的主记录。一切都按预期工作,除非我查看触发器的定义,我可以看到它解决了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

1 个答案:

答案 0 :(得分:1)

您是否可以自动创建触发器定义(使用花哨的文本模板工具,甚至只是一个简单的脚本),可以从sysibm.syscolumns中找到列并使用所有当前列生成触发器主体?然后,只要表架构发生更改,您只需重新生成脚本并重新应用触发器以覆盖新字段。