首页 > 解决方案 > 跟踪属性变化

问题描述

我不是 DBA,不能实现触发器,也不能使用 CDC!

在暂存区,我确实有一个 PRODUCTS 表,其中包含以下列:PROD_ID, ATTR1_ID, ATTR2_ID, CREATED_BY, UPDATED_BY。当应用程序用户更改产品的属性 #1 时,ATTR1_ID会更改并且用户 ID 保存在UPDATED_BY列中。我需要更改属性 #1 的人员和时间的信息。应用程序不跟踪更改,因此我需要在后台自己进行。我创建了一个历史表来跟踪 ATTR1 的列更改PROD_ID, ATTR1_ID, UPDATED_BY, DATE_FROM, DATE_TO

此表中的数据应如下所示:

PROD_ID  ATTR1_ID   DATE_FROM     DATE_TO
      1       100  20.02.2021      <null>
      2       200  21.02.2021  22.02.2021   <-- attribute changed on 22.02.2021 from 200 to 201
      2       201  22.02.2021      <null>
      3       100  23.02.2021      <null>   <-- new product started

我打算为前一天的数据创建 PRODUCTS_OLD 表,为当天的数据创建 PRODUCTS_NEW 表。然后我打算每天将 PRODUCTS 数据复制到 PRODUCTS_NEW 表中。使用 MINUS 运算符,我可以看到新旧(昨天)表之间的变化。在单独的历史表中检测到更改并插入/更新有关该更改的信息后,我将新数据复制到旧表中并每天重复此操作。

做这一切的最好方法是什么?

标签: sqloracletracking

解决方案


推荐阅读