Wysyłanie danych przyrostowych do innej aplikacji z bazy danych Oracle: - Nawet mała sugestia byłaby bardzo pomocna
Załóżmy, że mam 1 stół Item
. DML
na tym stole dzieje się wiele razy dziennie. Cokolwiek DML (Wstaw aktualizację, usuń) dzieje się w tej tabeli, muszę wstawić te dane transakcji do innej aplikacji za pomocą APIs
.
jeśli w tabeli pozycji zostaną wstawione 2 rekordy, 1 zaktualizowany i 1 usunięty, muszę wprowadzić dane do innej aplikacji w poniższym formularzu. plik będzie w formacie json.
I can create below file. My question is regarding how to extract daily transactional data.
{
"insert": ["A1,A2"].
"delete": "B1",
"update": "C1 "
}
coś jak wyżej. oznacza, że jeśli A1 A2 wstawiono do tabeli pozycji, B1 został usunięty, a C1 zaktualizowany. więc wyślę dane w powyższym formacie do aplikacji docelowej, aby wprowadzić zmiany.
W tym celu stworzyłem jeszcze jedną tabelę Item_trigger
. również utworzyłem trigger
w tabeli Item. więc jeśli zdarzy się jakikolwiek DML, trigger
wstawi do Item_trigger
tabeli wartość
('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')
następnie korzystając z Item_trigger
tabeli utworzę plik i wyślę dane do systemu docelowego.
Powyższy projekt został odrzucony, ponieważ używam wyzwalacza. Czy jest jakieś dobre rozwiązanie? Myślałem o MV, ale nie rozważa usunięcia. nie bierze pod uwagę, delete
więc nie mogę nawet tego użyć.
Czy mógłbyś mi pomóc w projektowaniu. Czy jest tak, aby rejestrować transakcję bez użyciatrigger
Odpowiedzi
Możesz skorzystać z kontroli na poziomie instrukcji na konkretnej tabeli. Ale to tylko dostarczy informacji o rodzaju operacji, ale nie dostarczy rzeczywistych danych. Możesz połączyć te informacje z przechowywaniem wartości wszelkich wstawionych, usuniętych i zaktualizowanych elementów w innej tabeli lub użyć tabeli głównej do bezpośredniego przesyłania danych.
Poniżej znajduje się skrypt
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';