Envoi de données incrémentielles à une autre application à partir de la base de données Oracle: - Même une petite suggestion serait très utile

Aug 15 2020

J'ai 1 table laisse supposer Item. il y en a beaucoup qui DMLse passent quotidiennement sur cette table. Quel que soit le DML (insérer la suppression de la mise à jour) sur cette table, je dois insérer ces données de transaction dans une autre application en utilisant APIs.

si dans la table des éléments, 2 enregistrements sont insérés, 1 mis à jour et 1 supprimé, j'ai besoin d'injecter des données dans une autre application dans le formulaire ci-dessous. le fichier sera au format json.

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

quelque chose comme ci-dessus. signifie que si A1 A2 est inséré dans la table Item, B1 a été supprimé et C1 a été mis à jour. Je vais donc envoyer les données au format ci-dessus à l'application cible pour effectuer des modifications.

Pour ce faire, j'ai créé une autre table Item_trigger. aussi j'ai créé triggersur la table Item. donc si un DML se produit, triggeril s'insère dans la Item_triggertable avec une valeur

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

puis en utilisant la Item_triggertable, je vais créer un fichier et envoyer les données au système cible.

La conception ci-dessus a été rejetée car j'utilise le déclencheur. Je parlais de MV mais cela ne considère pas la suppression. ne considère pas deletedonc je ne peux même pas utiliser cela.

Pourriez-vous s'il vous plaît m'aider avec la conception. Est-il possible d'enregistrer une transaction sans utilisertrigger

Réponses

Atif Aug 15 2020 at 23:32

Vous pouvez utiliser l'audit au niveau des états sur une table particulière. Mais cela ne fournira que les informations sur le type d'opération qui a été effectué, mais pas les données réelles. Vous pouvez combiner ces informations avec le stockage de la valeur de tout ce qui est inséré, supprimé et mis à jour dans une autre table ou utiliser la table principale pour transmettre directement des données.

Ci-dessous le 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';