【问题标题】:Issue replicating updates to primary key data with SymmetricDS使用 SymmetricDS 对主键数据进行复制更新
【发布时间】: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


    【解决方案1】:

    是否可以在源表中添加一列并将其视为主键?例如,如果包含组合键的七列,则可以是串联。然后将该列声明为同步的主键,并在目标数据库的表中添加相同的列。

    【讨论】:

    • 很遗憾,这不是一个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2016-08-24
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多