Invio di dati incrementali ad altre applicazioni dal database Oracle: - Anche un piccolo suggerimento sarebbe molto utile
Ho 1 tavolo supponiamo Item
. ci sono molti DML
eventi quotidiani su questo tavolo. Qualunque cosa DML (Inserisci aggiornamento cancella) accada su questa tabella, ho bisogno di inserire questi dati di transazione in un'altra applicazione utilizzando APIs
.
se nella tabella degli elementi vengono inseriti 2 record, 1 aggiornato e 1 eliminato, devo inserire i dati in un'altra applicazione nel modulo sottostante. il file sarà in formato json.
I can create below file. My question is regarding how to extract daily transactional data.
{
"insert": ["A1,A2"].
"delete": "B1",
"update": "C1 "
}
qualcosa come sopra. significa che se A1 A2 è stato inserito nella tabella Articolo, B1 è stato eliminato e C1 è stato aggiornato. quindi invierò i dati nel formato sopra all'applicazione di destinazione per apportare modifiche.
Per fare questo ho creato un'altra tabella Item_trigger
. anch'io l'ho creato trigger
sulla tabella Item. quindi se si verifica un DML, trigger
verrà inserito nella Item_trigger
tabella con valore
('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')
quindi utilizzando la Item_trigger
tabella creerò il file e invierò i dati al sistema di destinazione.
Il design di cui sopra è stato rifiutato perché sto usando trigger. Esiste una buona soluzione? Stavo pensando a MV ma non considera l'eliminazione. non considera delete
quindi non posso usare nemmeno quello.
Potresti per favore aiutarmi con il design. C'è comunque per registrare la transazione senza utilizzaretrigger
Risposte
È possibile utilizzare il controllo a livello di istruzione su una tabella particolare. Ma ciò fornirà solo le informazioni sul tipo di operazione eseguita ma non i dati effettivi. È possibile combinare queste informazioni con la memorizzazione del valore di ciò che è stato inserito, eliminato e aggiornato in un'altra tabella o utilizzare la tabella principale per trasmettere direttamente i dati.
Di seguito è riportato lo script
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';