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
——————————
関連したトピックス
- [Syniti(旧DBMoto)]レコード競合(コンフリクト)発生時のレコード内容を出力する方法
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- [Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト
- ミラーリングおいてのレコード数を確認の方法【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]「未マッピング使用」機能によるマッピング外のデータを活用したレプリケーション
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方④:レプリケーションスクリプト
- レプリケーションの際にnullを特定の値に変換する方法 その1【リアルタイムレプリケーションツールDBMoto】
- [DBMoto][スクリプト]条件付きレプリケーションを行うサンプルVBスクリプト
- ・レプリケーションの所要時間を計測する手法【リアルタイムレプリケーションツールDBMoto】
- 2つのソーステーブルからターゲットの一つのレコードにレプリケーション