DB2表更改跟踪

noj0wjuj  于 2022-11-07  发布在  DB2
关注(0)|答案(3)|浏览(184)

我想跟踪IBM DB2表数据更改(插入、更新、删除),并将更改插入到另一个表中。
最简单的解决方案是什么?它是AS 400上的IBM DB2 for iSeries。
例如,是否可以添加触发器来跟踪要轮询的特定表中的这些更改?

  • 谢谢-谢谢
relj7zay

relj7zay1#

您是否启用了日志功能并捕获了映像前后的信息?如果是,您可以从日志中获取与数据更改相关的所有信息。

ldxq2e6h

ldxq2e6h2#

我认为触发器最适合您。请注意,系统将需要投入资源来跟踪这些,所以请让您的系统操作员知道!。
我会这么做:
1.创建要跟踪其更改的文件的副本:

CREATE TABLE LIB.TABLEHST AS (SELECT * FROM LIB.TABLE) WITH NO DATA;

1.为操作和日期时间添加列:

ALTER TABLE LIB.TABLEHST
ADD COLUMN OPERATION CHAR(10),
ADD COLUMN DATEMODIFIED TIMESTAMP DEFAULT '1970-01-01 00:00:00';

1.创建触发器以跟踪插入:

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;

1.创建触发器以跟踪更新:

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;

1.创建触发器以跟踪删除:

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;

1.编辑:通过插入、更新和删除来测试并确保一切都正常工作!
如果有帮助,请告诉我!

yrwegjxp

yrwegjxp3#

删除的触发器需要引用OLD而不是NEW。

CREATE TRIGGER LIB.TABLEDEL
AFTER DELETE ON LIB.TABLE
REFERENCING**OLD**AS M
FOR EACH ROW
BEGIN ATOMIC
INSERT INTO LIB.TABLEHST (COLUMN1, COLUMN2, OPERATION, DATEMODIFIED)
VALUES (COLUMN1, COLUMN2, 'DELETE', CURRENT TIMESTAMP);
END;

相关问题