Oracleデータベースから他のアプリケーションに増分データを送信する:-小さな提案でも非常に役立ちます

Aug 15 2020

私は1つのテーブルを持っていると仮定しましょうItemDMLこのテーブルでは毎日多くのことが起こります。このテーブルでDML(Insert update delete)が発生した場合は、を使用してこのトランザクションデータを別のアプリケーションに挿入する必要があります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がアイテムテーブルに挿入された場合、B1が削除され、C1が更新されたことを意味します。したがって、上記の形式でデータをターゲットアプリケーションに送信して、変更を加えます。

これを行うために、もう1つのテーブルを作成しましたItem_trigger。またtrigger、アイテムテーブルに作成しました。したがって、DMLが発生した場合、値を使用triggerしてItem_triggerテーブルに挿入されます

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

次に、Item_triggerテーブルを使用してファイルを作成し、データをターゲットシステムに送信します。

トリガーを使用しているため、上記のデザインは拒否されました。良い解決策はありますか?私はMVについて考えていましたが、削除は考慮されていません。考えdeleteていないのでそれでも使えません。

デザインを手伝ってくれませんか。とにかく使用せずにトランザクションを記録することはありますかtrigger

回答

Atif Aug 15 2020 at 23:32

特定のテーブルでステートメントレベルの監査を利用できます。ただし、これは実行された操作のタイプの情報のみを提供し、実際のデータは提供しません。この情報を、挿入、削除、更新されたものの値を別のテーブルに保存することと組み合わせたり、メインテーブルを使用してデータを直接送信したりできます。

以下はスクリプトです

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';