在阅读了SymmetricDS用户指南之后,我不确定SymmetricDS是否支持冲突解决,这不是基于PK,而是完全基于我自己的自定义列。
考虑到以下情况:
双向更新的2个节点
每个节点都有一个必须同步的表
现在,表架构如下所示(简化):
id (pk) | name (char) | reference (char)
我想知道的是,是否可以将列
products
定义为冲突解决和插入/更新操作的标识符,而不是pk列reference
?例子:
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
在Node0/1中创建新记录时,Node1中第2行的更改将触发对Node1中第1行的更新将触发在相应节点中的插入,但考虑到可能已经进行了PK。
此外,我想根据column
id
的值筛选要同步的表行。这意味着只有行应该同步到reference
的位置。谢谢!
最佳答案
查看触发器表上的“SYNC_KEY_NAMES”列。
指定应用作
同步操作的密钥。默认情况下,如果未指定,则
将使用表的主键。
如果将值“name”插入此列,SDS将把它作为PK处理。
将id保留为PK会造成障碍。如果此列自动递增,则可以尝试在触发器表列“EXCLUDED_column_NAMES”中排除它。因为这是PK,我不知道SDS是否会忽略它。
如果不起作用,则必须编写Custom Load Filter以在插入时增加id字段。
关于postgresql - SymmetricDS pk替代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30219330/