DB2表更改跟踪

时间:2018-02-12 22:27:52

标签: db2 db2-400

我想跟踪IBM DB2表数据更改(插入,更新,删除),并将更改插入到另一个表中。

最简单的解决方案是什么?它是AS400上的IBM DB2 for iSeries。

例如,是否可以添加触发器来跟踪我将要轮询的特定表中的这些更改?

感谢。

2 个答案:

答案 0 :(得分:0)

您是否启用了日记功能并捕获图像前后?如果是,您可以从期刊获得与数据变更相关的所有信息。

答案 1 :(得分:0)

我认为触发器最适合您。请注意,系统需要投入资源来跟踪这些内容,以便让您的系统操作员知道!。

以下是我要做的事情:

  1. 创建要跟踪更改的文件的副本:

    CREATE TABLE LIB.TABLEHST AS (SELECT * FROM LIB.TABLE) WITH NO DATA;
    
  2. 为操作和日期时间添加列:

    ALTER TABLE LIB.TABLEHST
    ADD COLUMN OPERATION CHAR(10),
    ADD COLUMN DATEMODIFIED TIMESTAMP DEFAULT '1970-01-01 00:00:00';
    
  3. 创建触发器来跟踪插入内容:

    CREATE TRIGGER LIB.TABLEINS
    AFTER INSERT ON LIB.TABLE
    REFERENCING NEW AS M
    FOR EACH ROW
    BEGIN ATOMIC
    INSERT INTO LIB.TABLEHST (COLUMN1, COLUMN2, OPERATION, DATEMODIFIED)
    VALUES (COLUMN1, COLUMN2, 'INSERT', CURRENT TIMESTAMP);
    END; 
    
  4. 创建触发器以跟踪更新:

    CREATE TRIGGER LIB.TABLEUPD
    AFTER UPDATE ON LIB.TABLE
    REFERENCING NEW AS M
    FOR EACH ROW
    BEGIN ATOMIC
    INSERT INTO LIB.TABLEHST (COLUMN1, COLUMN2, OPERATION, DATEMODIFIED)
    VALUES (COLUMN1, COLUMN2, 'UPDATE', CURRENT TIMESTAMP);
    END;
    
  5. 创建触发器以跟踪删除:

    CREATE TRIGGER LIB.TABLEDEL
    AFTER DELETE ON LIB.TABLE
    REFERENCING NEW AS M
    FOR EACH ROW
    BEGIN ATOMIC
    INSERT INTO LIB.TABLEHST (COLUMN1, COLUMN2, OPERATION, DATEMODIFIED)
    VALUES (COLUMN1, COLUMN2, 'DELETE', CURRENT TIMESTAMP);
    END;
    
  6. 编辑:通过插入,更新和删除来测试并确保操作正常!

  7. 请告诉我这是否有帮助!