Выпускать репликационные обновления данных первичного ключа с помощью SymmetricDS - PullRequest
1 голос
/ 19 сентября 2019

Я выполняю репликацию из MSSQL (SQL Server 13) в PostgreSQL (9.5) с использованием SymmetricDS.

Реплицируемая таблица имеет составной ключ из 7 различных столбцов.Все отлично работает от начальной загрузки до вставки и обновления данных.Однако я сталкиваюсь с проблемой всякий раз, когда запускаю обновление, которое изменяет данные в одном из 7 столбцов, которые составляют первичный ключ.На стороне MSSQL это обновляет строку, нет проблем.На стороне Postgres, вместо обновления столбца, он вставляет дополнительную строку.

Если я изменю запись sym_transform_column, чтобы иметь 0 для pk определенного столбца, он будет корректно обновлять данные, но не будет использовать этот столбецв качестве первичного ключа, чтобы определить, какую строку обновлять.

Пример Сгенерированный SQL с pk = 0 для sym_transform_column:

update table set pk1 = 0, value1 = 'test', value2 = 'test' where pk2 = 0 and pk3 = 0

Пример Сгенерированный SQL с pk = 1 для sym_transform_column:

update table set value1='test', value2='test' where pk1 = 0 and pk2 = 0 and pk3 = 0

Я понимаю, что общепризнанно, что PK должен быть неизменным, но для покрытия всех непредвиденных обстоятельств, есть ли способ реплицировать обновление данных первичного ключа из MSSQL в PostgreSQL с использованием SymmetricDS?

1 Ответ

0 голосов
/ 19 сентября 2019

Можно ли добавить столбец в исходную таблицу и рассматривать его как первичный ключ?Это может быть, например, конкатенация, если семь столбцов составляют составной ключ.Затем объявите этот столбец как первичный ключ для синхронизации и добавьте этот же столбец в таблицу в целевой базе данных.

...