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
J'ai 1 table laisse supposer Item
. il y en a beaucoup qui DML
se 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éé trigger
sur la table Item. donc si un DML se produit, trigger
il s'insère dans la Item_trigger
table avec une valeur
('A1','Insert'), ('A2','Insert'),('B1','delete'),('C1','Update')
puis en utilisant la Item_trigger
table, 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 delete
donc 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
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';