问题描述
我有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';