双方向レプリケーション時のコンフリクト回避オプション【リアルタイムレプリケーションツールDBMoto】


DBMotoでの双方向レプリケーション(シンクロナイゼーション)において、双方のDBで同じレコードをほぼ同時に更新した場合にどちらが優先されるかはDBMotoの「コンフリクトオプション」で以下の4つから選択可能です。

1. ソースDBを優先
2. ターゲットDBを優先
3. タイムスタンプの速い方を優先
4. ユーザスクリプトを使用

通常は1~3のいずれかで十分ですが、これ以外の挙動をさせたい場合はユーザスクリプトで独自設定が可能です。

例えば、3ではタイムスタンプが「速い方」となっていますが、タイムスタンプの「遅い方」を優先したい場合、下記のようなスクリプトを記述することで実現できます。

——————————
Public Overrides Function Replication_onConflict(recSource As IRecord, recTarget As  IRecord) As IRecord

If recSource.GetLogValue(enmLogFields.TransactionTS).ToString() > recTarget.GetLogValue(enmLogFields.TransactionTS).ToString() Then
Return recSource
Else
Return recTarget
End If
End Function
——————————

関連したトピックス