DBMotoでは下記のような条件付きレプリケーションが可能です。
・値が~を満たすときのみレプリケーション
・登録、更新、削除のうち一部のみレプリケーション
下記は登録・更新・削除時にフィールドの値が20140711未満の場合はレプリケーションしない(20140711以降のみレプリケーション)するためのサンプルスクリプトです。
登録時のみ・・・recSource.OperationType = enmOperationType.Insert
更新時のみ・・・recSource.OperationType = enmOperationType.Update
削除時のみ・・・recSource.OperationType = enmOperationType.Delete
レプリケーションを停止・・・AbortRecord = True
レプリケーションを稼働・・・AbortRecord = False
Imports System
Imports System.Data
Imports Microsoft.VisualBasic
Imports DBMotoPublic
Imports DBMotoScript
Imports DBRS.GlobalScript
Namespace DBRS
Public Class ReplicationScript : Inherits IReplicationScript
Public Overrides Sub Record_onBeforeMapping( recSource As DBMotoPublic.IRecord, ByRef AbortRecord As Boolean, ByRef DisableReplication As Boolean)
' カラム名の変数
Dim strField As String
' 登録・更新・削除時
If (recSource.OperationType = enmOperationType.Insert) Or (recSource.OperationType = enmOperationType.Update) Or (recSource.OperationType = enmOperationType.Delete) Then
' DBのカラム名を指定して値を取得
strField = CType(recSource.GetValueAfter("Field").ToString(), Integer)
' 20140711 未満はレプリケーションをスキップ(Abort=True)する
If (strField < "20140711") Then
AbortRecord = True
Else
AbortRecord = False
End If
End If
End Sub
End Class
End Namespace
関連したトピックス
- [Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト
- 2つのソーステーブルからターゲットの一つのレコードにレプリケーション
- [DBMoto]「未マッピング使用」機能によるマッピング外のデータを活用したレプリケーション
- AS/400でのレコード全消去時における、DBMotoによるミラーリング動作
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方④:レプリケーションスクリプト
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- 複数のテーブルにあるレコードを1つのテーブルへ統合する際の注意点【リアルタイムレプリケーションツールDBMoto】
- 複数の複製元サーバから1つの複製先サーバへの結合レプリケーションもDBMotoで簡単実現
- [DBMoto]関数を使用してレプリケーション時のデータを変換する方法(VB/C#言語選択、関数適用、ユーザ関数作成、置換関数、一括設定手順)
- レプリケーションの際にnullを特定の値に変換する方法 その2【リアルタイムレプリケーションツールDBMoto】