Closed hvlad closed 2 months ago
Do I assume right that you update PK values to new ones?
Do I assume right that you update PK values to new ones?
Sure.
If it is prohibited by some FK which error is returned by IReplicator::process()? Original UK violation or snowballed FK violation?
I suppose, FK violation. Didn't check it.
@@@ QA issue @@@ Test not needed, see test for #8040
The setup is the same as in #8040:
Currently, PK violation on insert is resolved by updating conflicting record, using the PK fields values.
But case with UK violation can't be resolved as engine tries to find record for update using PK and such record obviously can't be found, thus original error is returned. This stops replication until manual correction by DBA.
Improvement is to update record using not PK but the unique index that was violated on insert. In this case record exists and can be updated. Replication process will continue.