我想跟踪IBM DB2表数据更改(插入,更新,删除),并将更改插入到另一个表中。
最简单的解决方案是什么?它是AS400上的IBM DB2 for iSeries。
例如,是否可以添加触发器来跟踪我将要轮询的特定表中的这些更改?
感谢。
答案 0 :(得分:0)
您是否启用了日记功能并捕获图像前后?如果是,您可以从期刊获得与数据变更相关的所有信息。
答案 1 :(得分:0)
我认为触发器最适合您。请注意,系统需要投入资源来跟踪这些内容,以便让您的系统操作员知道!。
以下是我要做的事情:
创建要跟踪更改的文件的副本:
CREATE TABLE LIB.TABLEHST AS (SELECT * FROM LIB.TABLE) WITH NO DATA;
为操作和日期时间添加列:
ALTER TABLE LIB.TABLEHST
ADD COLUMN OPERATION CHAR(10),
ADD COLUMN DATEMODIFIED TIMESTAMP DEFAULT '1970-01-01 00:00:00';
创建触发器来跟踪插入内容:
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;
创建触发器以跟踪更新:
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;
创建触发器以跟踪删除:
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;
编辑:通过插入,更新和删除来测试并确保操作正常!
请告诉我这是否有帮助!