การส่งข้อมูลเพิ่มเติมไปยังแอปพลิเคชันอื่นจากฐานข้อมูล Oracle: - แม้แต่คำแนะนำเล็กน้อยก็มีประโยชน์มาก

Aug 15 2020

ผมมีตารางที่ 1 Itemช่วยให้สมมติว่า มีหลายอย่าง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 ลงในตารางรายการ B1 จะถูกลบและ C1 ได้รับการอัปเดต ดังนั้นฉันจะส่งข้อมูลในรูปแบบด้านบนเพื่อกำหนดเป้าหมายแอปพลิเคชันเพื่อทำการเปลี่ยนแปลง

Item_triggerการทำเช่นนี้ฉันสร้างตารางอีกหนึ่ง ฉันสร้างtriggerบนตารางรายการด้วย ดังนั้นหาก DML เกิดขึ้นtriggerจะแทรกลงในItem_triggerตารางที่มีค่า

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

จากนั้นใช้Item_triggerตารางฉันจะสร้างไฟล์และส่งข้อมูลไปยังระบบเป้าหมาย

การออกแบบข้างต้นถูกปฏิเสธเนื่องจากฉันใช้ 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';