阅读SymmetricDS用户指南后,我不确定SymmetricDS是否支持冲突解决方案,该解决方案不是基于PK而是完全在我自己的自定义列上。
鉴于以下情况:
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可能已被占用。
此外,我想按列reference
的值过滤要同步的表行。这意味着仅行应同步reference startwith('IN') == True
。
谢谢!
答案 0 :(得分:1)
查看TRIGGER表中的“SYNC_KEY_NAMES”列。
指定以逗号分隔的列列表,这些列应该用作 同步操作的关键。默认情况下,如果未指定,则 将使用该表的主键。
如果您将值'name'插入此列,则SDS会将其作为PK进行处理。
将id作为PK留下了障碍。如果此列自动递增,您可以尝试在触发器表列“EXCLUDED_COLUMN_NAMES”中将其排除。由于这是PK,我不知道SDS是否会忽略它。
如果这不起作用,则必须编写Custom Load Filter来增加插入时的id字段。