Invio di dati incrementali ad altre applicazioni dal database Oracle: - Anche un piccolo suggerimento sarebbe molto utile

Aug 15 2020

Ho 1 tavolo supponiamo Item. ci sono molti DMLeventi 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 triggersulla tabella Item. quindi se si verifica un DML, triggerverrà inserito nella Item_triggertabella con valore

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

quindi utilizzando la Item_triggertabella 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 deletequindi non posso usare nemmeno quello.

Potresti per favore aiutarmi con il design. C'è comunque per registrare la transazione senza utilizzaretrigger

Risposte

Atif Aug 15 2020 at 23:32

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