从Oracle数据库向其他应用程序发送增量数据:-即使很小的建议也将非常有帮助

问题描述

我有1个表,假设Item。每天有很多DML发生在此桌子上。无论此表上发生什么DML(插入更新删除),我都需要使用APIs将此交易数据插入到另一个应用程序中。

如果在项目表中插入了2条记录,更新了1条记录,删除了1条记录,则需要以以下形式将数据注入到另一个应用程序中。文件将为json格式。

  I can create below file. My question is regarding how to extract daily transactional data.
{
  "insert": ["A1,A2"].
   "delete": "B1","update": "C1 "
}

类似上面的东西。表示如果将A1 A2插入到Item表中,则B1被删除,C1被更新。所以我会将上述格式的数据发送到目标应用程序进行更改。

为此,我又创建了一个表Item_trigger。我也在Item表上创建了trigger。因此,如果发生任何DML,trigger将插入具有值的Item_trigger表中

('A1','Insert'),('A2',('B1','delete'),('C1','Update')

然后使用Item_trigger表创建文件并将数据发送到目标系统。

以上设计被拒绝,因为我使用的是扳机。有什么好的解决方法吗?我当时对MV感兴趣,但它不考虑删除。不会考虑delete,因此我什至无法使用。

能帮我设计吗?反正有没有使用trigger

来记录交易的信息

解决方法

您可以在特定表上使用语句级审核。但这仅会提供已执行哪种类型的操作的信息,而不会提供实际数据。您可以将这些信息与存储在另一个表中插入,删除和更新的值结合起来,或者使用主表直接传输数据。

下面是脚本

audit select,insert,update,delete on test.test_audit by access;
delete from test_audit where id <= 10;
select * from Dba_Audit_Object where OBJ_NAME='TEST_AUDIT';

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...