Limitação de Replicat Paralelo para bancos de dados não Oracle
A ordenação diferente de índices de coluna de chave estrangeira associados à chave primária do Pai faz com que o Replicat parellel falhe. Isso implica que o Replicat paralelo é encerrado nos casos em que o pai tem uma chave primária composta de tal forma que, quando a chave estrangeira que faz referência a ele na tabela filho tem uma ordenação diferente em sua posição ordinal da chave primária.
Por exemplo:
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);
Neste exemplo, a chave primária do pai (atstgt.tgt) tem pk1 na posição 1 e pk2 na posição 2. No entanto, na tabela filho, a posição ordinal é invertida e a posição ordinal pk1 3 vem após a posição ordinal pk2's 2. Isso leva a falhas intermitentes no Replicat paralelo com o erro ROW NOT FOUND.
Para evitar esses problemas, garanta que os índices das colunas de chave estrangeira tenham a mesma ordenação na tabela filho quando comparados à ordenação das colunas de chave primária composta na tabela pai, conforme mostrado no seguinte exemplo:
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);