Bonjour à tous,
J'ai un petit soucis avec la technique que nous avons utilisés afin que notre outil ETL n'importe que les modifications et les nouveaux ajouts dans notre entrepôt de données.
Les ajouts sont gérés via un outil de réplication, toutefois, afin d'identifier les modifications dans les tables "enfants" d'une requête nous utilisons un système de trigger qui met à jour un indicateur dans la table mère.
Un exemple de ce que j'entends par table mère / enfant:
Dans le cas ci-haut, commande est la table mère et produits_commandes la table enfant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Toutefois, dans le modèle il y a deux tables qui sont à la fois table mère/enfants dans deux dimensions. Donc, les triggers s'appelle mutuellement et ce qui bloque les deux tables avec l'erreur
Je sais que sous MSSQL l'instruction suivante existe:ORA-04091: table XXXX is mutating.
ce qui réglerait mon problème. Sinon l'autre solution que je vois est de désactiver le trigger causant problème dans l'autre table et le réactiver après la MAJ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Toutefois, j'aimerais trouver une autre solution car si plusieurs transactions arrivent sur les deux tables, je risque de ne pas attraper la modification en tant que telle.
Voici le code des deux triggers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12


 

 
		
		 
        

 
			
			
 
   
 


 Prévention de trigger récursif
 Prévention de trigger récursif
				 Répondre avec citation
  Répondre avec citation
Partager