Oracle veritabanından diğer uygulama yazılımlarına artımlı veri göndermek: - Küçük bir öneri bile çok yardımcı olacaktır

Aug 15 2020

Farz edelim ki 1 masam var Item. DMLbu masada her gün birçok şey oluyor. Bu tabloda her ne DML (Güncelleme silme ekle) olursa olsun, bu işlem verilerini kullanarak başka bir uygulamaya eklemem gerekiyor APIs.

madde tablosunda, 2 kayıt eklenir, 1 güncellenir ve 1 silinirse aşağıdaki formda başka bir uygulamaya veri enjekte etmem gerekir. dosya json formatında olacaktır.

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

yukarıdaki gibi bir şey. A1 A2 Öğe tablosuna eklenmişse, B1 silinmiş ve C1 güncellendi demektir. bu yüzden yukarıdaki formattaki verileri değişiklik yapmak için hedef uygulamaya göndereceğim.

Bunu yapmak için bir tablo daha oluşturdum Item_trigger. Ayrıca triggerÖğe tablosunda oluşturdum . yani herhangi bir DML olursa trigger, Item_triggerdeğeri olan tabloya eklenir

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

daha sonra Item_triggertabloyu kullanarak dosya oluşturacağım ve verileri hedef sisteme göndereceğim.

Yukarıdaki tasarım tetikleyici kullandığım için reddedildi. İyi bir çözüm var mı? MV hakkında endişeliydim ama silmeyi düşünmüyor. dikkate almıyor deletebu yüzden onu bile kullanamam.

Lütfen bana tasarım konusunda yardım eder misin? Kullanmadan işlemi kaydetmek için zaten var mıtrigger

Yanıtlar

Atif Aug 15 2020 at 23:32

Belirli bir tablo üzerinde ifade düzeyinde denetimden yararlanabilirsiniz. Ancak bu, gerçek verileri değil, yalnızca ne tür bir işlemin gerçekleştirildiği bilgisini sağlayacaktır. Bu bilgileri, başka bir tabloya eklenen, silinen ve güncellenen her şeyin değerini depolamakla birleştirebilir veya verileri doğrudan iletmek için ana tabloyu kullanabilirsiniz.

Komut dosyası aşağıdadır

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