1

SymmetricDS ユーザーガイドを読んだ後、SymmetricDS が PK に基づくのではなく、独自のカスタム列のみに基づく競合解決をサポートしているかどうかわかりません。

次のシナリオを考えます。

  • 双方向更新の 2 つのノード
  • 各ノードにはproducts、同期する必要がある 1 つのテーブルがあります

これで、テーブル スキーマは次のようになります (簡略化)。

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。これは、行のみを同期する必要があることを意味しますreference startwith('IN') == True

ありがとう!

4

1 に答える 1

1

TRIGGER テーブルの列「SYNC_KEY_NAMES」を見てください。

同期操作のキーとして使用する列のカンマ区切りリストを指定します。デフォルトでは、指定されていない場合、テーブルの主キーが使用されます。

この列に値「name」を挿入すると、SDS はそれを PK として処理します。

id を PK のままにしておくと、ハードルが生じます。この列が自動インクリメントする場合は、トリガー テーブルの列「EXCLUDED_COLUMN_NAMES」で除外してみてください。これは PK であるため、SDS がそれを無視するかどうかはわかりません。

それが機能しない場合は、カスタム ロード フィルターを記述して、挿入時に id フィールドをインクリメントする必要があります。

于 2015-05-14T19:01:30.040 に答える