[Syniti(DBMoto)][スクリプト] 特定カラムの値が変更となった場合、ターゲットのレコードを削除するサンプルスクリプト


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

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください