Limitation de la réplication parallèle pour les bases de données non Oracle

L'ordre différent des index de colonne de clé étrangère associés à la clé primaire du parent entraîne l'échec du processus Replicat Parellel. Cela implique que le processus Replicat parallèle s'interrompt dans les cas où le parent a une clé primaire composite telle que lorsque la clé étrangère qui la référence dans la table enfant a un ordre différent dans sa position ordinale que la clé primaire.

Exemple :

CREATE TABLE atstgt.tgt (
  pk1 VARCHAR(10) NOT NULL,
  pk2 VARCHAR(20) NOT NULL,
  num INT,
) PRIMARY KEY(pk1, pk2);

CREATE TABLE atstgt.child (
  id INT NOT NULL,
  pk2 VARCHAR(10) NOT NULL,
  pk1 VARCHAR(20) NOT NULL,
  details VARCHAR(100),
  CONSTRAINT fk_child FOREIGN KEY (pk1, pk2) REFERENCES atstgt.tgt (pk1, pk2) ON DELETE CASCADE ON UPDATE CASCADE) PRIMARY KEY(id);

Dans cet exemple, la clé primaire du parent (atstgt.tgt) a pk1 à la position 1 et pk2 à la position 2. Cependant, dans la table enfant, la position ordinale est inversée et la position ordinale 3 de pk1 vient après la position ordinale 2 de pk2's. Cela entraîne des échecs intermittents dans la réplication parallèle avec une erreur ROW NOT FOUND.

Pour éviter de tels problèmes, assurez-vous que les index des colonnes de clé étrangère ont le même ordre dans la table enfant par rapport à l'ordre des colonnes de clé primaire composite dans la table parent, comme indiqué dans l'exemple suivant :

CREATE TABLE atstgt.tgt (
  pk1 VARCHAR(10) NOT NULL,
  pk2 VARCHAR(20) NOT NULL,
  num INT,
) PRIMARY KEY(pk1, pk2);

CREATE TABLE atstgt.child (
  id INT NOT NULL,
  pk1 VARCHAR(10) NOT NULL,
  pk2 VARCHAR(20) NOT NULL,
  details VARCHAR(100),
  CONSTRAINT fk_child FOREIGN KEY (pk1, pk2) REFERENCES atstgt.tgt (pk1, pk2) ON DELETE CASCADE ON UPDATE CASCADE) PRIMARY KEY(id);