Syniti Data Replication (DBMoto)では、レプリケーションジョブにスクリプトを組み込むことによって、ある程度レコードに操作を加えて、ターゲットデータベースにレプリケーションができます。
例えば、以下のスクリプトを組み込むことで、ソーステーブルに削除フラグを格納するカラムが存在し、そのカラムに対して削除フラグがたった場合、ターゲットテーブルのレコードを削除することが可能です。
“DFLUG” というカラムに格納されている値が1とUpdateされた場合、ターゲットレコードを削除するためのサンプルスクリプトです。
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_onAfterMapping( recSource As DBMotoPublic.IRecord, recTarget As DBMotoPublic.IRecord, ByRef AbortRecord As Boolean, ByRef DisableReplication As Boolean)
' ソーステーブルカラム名の変数
Dim strField As String
' ソース側へUpdateクエリが実行された時
If (recSource.OperationType = enmOperationType.Update) Then
' "DFLUG"というカラム名を指定し、値を取得
strField = CType(recSource.GetValueAfter("DFLUG").ToString(), Integer)
End If
' "DFLUG"の値が"1"だった場合、ターゲットのレコードにDeleteクエリを発行
If (strField = "1") Then
recTarget.OperationType = enmOperationType.Delete
End If
End Sub
End Class
End Namespace
関連したトピックス
- [DBMoto][スクリプト]条件付きレプリケーションを行うサンプルVBスクリプト
- 2つのソーステーブルからターゲットの一つのレコードにレプリケーション
- [DBMoto]「未マッピング使用」機能によるマッピング外のデータを活用したレプリケーション
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方④:レプリケーションスクリプト
- [Syniti(旧DBMoto)]レコード競合(コンフリクト)発生時のレコード内容を出力する方法
- 複数のテーブルにあるレコードを1つのテーブルへ統合する際の注意点【リアルタイムレプリケーションツールDBMoto】
- ミラーリングおいてのレコード数を確認の方法【リアルタイムレプリケーションツールDBMoto】
- 複数の複製元サーバから1つの複製先サーバへの結合レプリケーションもDBMotoで簡単実現
- AS/400でのレコード全消去時における、DBMotoによるミラーリング動作