sql - 跟踪属性变化
问题描述
我不是 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 运算符,我可以看到新旧(昨天)表之间的变化。在单独的历史表中检测到更改并插入/更新有关该更改的信息后,我将新数据复制到旧表中并每天重复此操作。
做这一切的最好方法是什么?
解决方案
推荐阅读
- angular - Angular 8(或 9)- 在编译之前获取模板 html
- ms-word - 使用 insertHtml 时,Word Online 中的内容前会出现额外的空格
- javascript - jQuery find 和 prev 方法
- r - 带有两个滑块的闪亮应用程序:第二个滑块仅选择端点,而不是范围
- arrays - Laravel - 访问关系属性
- mysql - Xamp 不会启动 MySQL
- javascript - 函数仅在输入 !== null 时运行
- python - 在 PyTorch 中本地测量多类分类的 F1 分数
- javascript - reactjs 将字符串解析为 HTML 的问题
- r - 如何提取多个数据框之间的公共行