Oracle डेटाबेस से अन्य एप्लिकेशन को वृद्धिशील डेटा भेजना: - यहां तक ​​कि छोटा सुझाव भी बहुत उपयोगी होगा

Aug 15 2020

मेरे पास 1 तालिका है मान लीजिए ItemDMLइस तालिका में दैनिक रूप से बहुत कुछ होता है। इस टेबल पर जो भी डीएमएल (इन्सर्ट अपडेट डिलीट करें) होता है, मुझे इस ट्रांजैक्शन डेटा को किसी अन्य एप्लिकेशन में उपयोग करने की आवश्यकता होती है 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 अपडेट हो गया। इसलिए मैं परिवर्तनों को करने के लिए आवेदन को लक्षित करने के लिए उपरोक्त प्रारूप में डेटा भेजूंगा।

ऐसा करने के लिए मैंने एक और तालिका बनाई Item_trigger। मैं भी triggerआइटम टेबल पर बनाया । इसलिए यदि कोई DML होता है तो मूल्य के साथ तालिका triggerमें सम्मिलित किया जाएगाItem_trigger

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

तब Item_triggerतालिका का उपयोग करके मैं फ़ाइल बनाऊंगा और डेटा को लक्ष्य प्रणाली में भेजूंगा।

उपरोक्त डिज़ाइन को अस्वीकार कर दिया गया है क्योंकि मैं ट्रिगर का उपयोग कर रहा हूं। क्या कोई अच्छा समाधान है? मैं एमवी के बारे में बात कर रहा था, लेकिन यह हटाने पर विचार नहीं करता है। विचार नहीं करता है 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';