Я выполняю репликацию из 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?