Prévention des erreurs d’insertion et de mise à jour dans Réplication de données d'instance
Vous pouvez éviter les échecs d’insertion et de mise à jour dans Réplication de données d'instance (IDR) en spécifiant un filtre de nom de classe dans le jeu de réplication du producteur.
Lorsque vous répliquez une table parente et une ou plusieurs tables enfants, vous devez ajouter un filtre sys_class_name à la table parente dans l’entrée sortante de votre ensemble de réplications de producteur. Si le filtre sys_class_name est manquant, les échecs d’insertion et de mise à jour s’affichent dans dans les scénarios suivants :
- Un échec de l’insertion se produit lorsqu’un enregistrement de la table enfant est répliqué, car le système tente deux insertions avec la même sys_id dans la table parente. L’ajout du filtre sys_class_name au parent empêche la violation de clé unique pendant l’opération INSERT dans la table parent.
- Un nouvel enregistrement est ajouté à une table enfant répliquée sur l’instance du créateur. Réplication de données d'instance (IDR) crée initialement l’enregistrement dans la table parente sur le consommateur, mais pas dans la table enfant. Si l’enregistrement enfant est modifié sur l’instance du producteur, un échec de la mise à jour se produit pendant la réplication sur la table enfant de l’instance consommateur, car l’enregistrement n’existe que dans la table parente.
Si la table est parente, décidez si vous souhaitez répliquer l’une de ses tables enfants.
- Si vous souhaitez répliquer une ou plusieurs tables enfants, vous devez identifier la valeur sys_class_name pour la table parente, puis ajouter un filtre sys_class_name correspondant à la table parente.
Par exemple, Type de tâche est l’étiquette de sys_class_name dans la table Tâche [task]. Pour commencer à répliquer les incidents en plus des tâches, vous devez ajouter [Type de tâche] [est] [Tâche] à l’entrée sortante pour la table Tâche [task].
- Si vous souhaitez uniquement répliquer la table parente, le filtre est facultatif.
- Si la table parente est déjà en cours de réplication, vous devez modifier le parent et ajouter le filtre sys_class_name.
Si la table est un enfant, décidez si vous souhaitez répliquer son parent.
- Si vous souhaitez également répliquer la table parente, vous devez identifier la valeur sys_class_name pour la table parente, puis ajouter un filtre sys_class_name correspondant à la table parente.
Par exemple, Type de tâche est l’étiquette de sys_class_name dans la table Tâche [task]. Pour commencer à répliquer des tâches en plus des incidents, vous devez ajouter [Type de tâche] [est] [Tâche] à l’entrée sortante de la table Tâche [tâche].
- Si vous souhaitez uniquement répliquer la table enfant, le filtre est facultatif.
- Si une ou plusieurs tables enfants sont déjà répliquées, vous devez ajouter le filtre sys_class_name au parent.