【发布时间】:2023-03-26 09:55:01
【问题描述】:
我正在使用 SymmetricDS 从 MSSQL (SQL Server 13) 复制到 PostgreSQL (9.5)。
正在复制的表有一个由 7 个不同列组成的组合键。从初始加载到插入和更新数据,一切都完美无缺。 但是,每当我运行更新来修改构成主键的 7 列之一中的数据时,我都会遇到问题。在 MSSQL 方面,它更新行,没问题。在 Postgres 方面,它不会更新列,而是插入一个额外的行。
如果我将 sym_transform_column 条目修改为 0 以 pk 特定列,那么它将正确更新数据,但不会利用该列作为主键来确定要更新的行。
为 sym_transform_column 生成 pk=0 的示例 SQL:
update table set pk1 = 0, value1 = 'test', value2 = 'test' where pk2 = 0 and pk3 = 0
为 sym_transform_column 生成 pk=1 的示例 SQL:
update table set value1='test', value2='test' where pk1 = 0 and pk2 = 0 and pk3 = 0
我意识到人们普遍认为 PK 应该是不可变的,但为了涵盖所有意外情况,有没有办法使用 SymmetricDS 将主键数据的更新从 MSSQL 复制到 PostgreSQL?
【问题讨论】:
标签: symmetricds