1

阅读 SymmetricDS 用户指南后,我不确定 SymmetricDS 是否支持不基于 PK 而是完全基于我自己的自定义列的冲突解决。

鉴于以下情况:

  • 2个节点,双向更新
  • 每个节点都有一个products必须同步的表

现在,表模式如下所示(简化):

id (pk) |  name (char)  | reference (char)

我想知道的是,是否可以将列定义reference为冲突解决和插入/更新操作的标识符而不是 pk 列id

例子:

Node0
id (pk) |  name (char)  | reference (char)
1          Foo            IN001
2          FooBaz         IN003
----

Node1
id (pk) |  name (char)  | reference (char)
1          Bar            EX001
2          Foo            IN001

Node1 中第 2 行的更改将触发节点 1 中第 1 行的更新,而在 Node0/1 中创建新记录将触发相应节点中的插入,但考虑到 PK 可能已被采用。

此外,我想通过 column 的值过滤要同步的表行reference。这意味着只有行应该同步 where reference startwith('IN') == True

谢谢!

4

1 回答 1

1

查看 TRIGGER 表上的“SYNC_KEY_NAMES”列。

指定应用作同步操作键的以逗号分隔的列列表。默认情况下,如果未指定,则使用表的主键。

如果您将值“名称”插入此列,SDS 会将其作为 PK 处理。

将 id 作为 PK 留下一个障碍。如果此列自动递增,您可以尝试将其排除在触发器表列“EXCLUDED_COLUMN_NAMES”中。既然是PK,不知道SDS会不会无视。

如果这不起作用,您将不得不编写一个自定义负载过滤器来增加插入时的 id 字段。

于 2015-05-14T19:01:30.040 回答