Gửi dữ liệu gia tăng đến ứng dụng khác từ cơ sở dữ liệu Oracle: - Đề xuất dù nhỏ cũng rất hữu ích

Aug 15 2020

Tôi có 1 bảng cho phép giả sử Item. có rất nhiều điều DMLxảy ra trên bảng này hàng ngày. Bất cứ điều gì DML (Chèn xóa cập nhật) xảy ra trên bảng này, tôi cần chèn dữ liệu giao dịch này vào ứng dụng khác bằng cách sử dụng APIs.

Nếu trong bảng mục, 2 bản ghi được chèn, 1 bản cập nhật và 1 bản đã bị xóa, tôi cần đưa dữ liệu vào một ứng dụng khác trong biểu mẫu bên dưới. tệp sẽ có định dạng json.

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

một cái gì đó như trên. có nghĩa là nếu A1 A2 được chèn vào bảng Item, B1 sẽ bị xóa và C1 được cập nhật. vì vậy tôi sẽ gửi dữ liệu ở định dạng trên tới ứng dụng đích để thực hiện thay đổi.

Để làm điều này, tôi đã tạo thêm một bảng Item_trigger. tôi cũng đã tạo triggertrên bảng Item. vì vậy nếu có bất kỳ DML nào xảy ra triggersẽ chèn vào Item_triggerbảng với giá trị

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

sau đó sử dụng Item_triggerbảng, tôi sẽ tạo tệp và gửi dữ liệu đến hệ thống đích.

Thiết kế trên đã bị từ chối vì tôi đang sử dụng trigger. Có giải pháp nào tốt không? Tôi đã nghĩ về MV nhưng nó không xem xét xóa. không xem xét deletevì vậy tôi không thể sử dụng ngay cả điều đó.

Bạn có thể vui lòng giúp tôi với thiết kế. Vẫn có để ghi lại giao dịch mà không cần sử dụngtrigger

Trả lời

Atif Aug 15 2020 at 23:32

Bạn có thể sử dụng kiểm tra mức báo cáo trên bảng cụ thể. Nhưng điều đó sẽ chỉ cung cấp thông tin về loại hoạt động đã được thực hiện chứ không phải dữ liệu thực tế. Bạn có thể kết hợp thông tin này với việc lưu trữ giá trị của bất kỳ thứ gì được chèn, xóa và cập nhật trong bảng khác hoặc sử dụng bảng chính để truyền trực tiếp dữ liệu.

Dưới đây là kịch bản

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