カラムレベルの競合検出のために、統合データベース内の同期テーブルからローをフェッチするデータスクリプトです。
SQL スクリプトでは、名前または疑問符を使用してイベントパラメータを指定できます。疑問符の使用は推奨されなくなりました。名前付きパラメータを使用することをおすすめします。1 つのスクリプト内で名前と疑問符を混在させることはできません。疑問符を使用する場合、パラメータは以下に示す順に指定する必要があり、後続のパラメータが指定されていない場合のみ省略可能です (たとえば、パラメータ 2 を使用する場合は、パラメータ 1 を使用してください)。名前付きパラメータを使用する場合は、パラメータの任意のサブセットを任意の順に指定できます。
SQL スクリプトのパラメータ名 | 説明 | 順序 (SQL では非推奨) |
---|---|---|
s.remote_id |
VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 |
適用外 |
s.username |
VARCHAR(128)。Mobile Link ユーザ名。このパラメータは省略可能です。 |
省略可 |
s.script_version | VARCHAR(128)。Mobile Link サーバが現在の同期に使用しているスクリプトバージョン文字列をこのパラメータに渡すことを指定する、オプションの IN パラメータ。このパラメータの指定に疑問符を使用することはできません。 |
適用外 |
r. pk-column-1 |
必須。カラム名またはカラム番号で参照される最初のプライマリキーカラム値。 |
1 (username を参照する場合は 2) |
... | ... | ... |
r. pk-column-N |
必須。カラム名またはカラム番号で参照される最後のプライマリキーカラム値。 |
N (username を参照する場合は N+1) |
なし。
upload_fetch_column_conflict スクリプトは、upload_update イベントに対応します。
このスクリプトは、BLOB がないリモートテーブルに対してのみ定義できます。
このスクリプトを使用すると、Mobile Link サーバは、最後の同期以降にリモートデータベースと統合データベースで同じカラムが更新された場合にのみローの競合を検出します。異なるユーザは、同じカラムを更新しないかぎり、同じローを更新することができ、競合は発生しません。
たとえば、upload_fetch_column_conflict スクリプトを使用すると、一方のリモートユーザが ULOrder テーブルの quant カラムを更新し、もう 1 人のリモートユーザが同じローの notes ローを更新した場合に競合が検出されないようにできます。両方のユーザが quant カラムを更新した場合のみ、競合が検出されます。
通常、競合検出は、upload_update スクリプトで一度に実行するとより速く実行されます。 upload_update テーブルイベントを参照してください。
upload_fetch_column_conflict スクリプトを使用し、競合が検出されない場合、upload_update スクリプトに渡されるロー値は、upload_fetch_column_conflict スクリプトによってリモートデータベースのアップロードまたは現在の統合値から取得されます。リモートデータベースで更新されたカラムにはリモートデータベースの値が使用されます。それ以外の場合は現在の統合値が使用されます。つまり、リモートデータベースで更新されたカラムのみが統合データベースで更新されます。
リモートデータベースのテーブルごとに、upload_fetch または upload_fetch_column_conflict スクリプトを 1 つのみ指定できます。
このスクリプトは、次のスクリプトがいずれも定義されていない場合、無視できます。upload_new_row_insert、upload_old_row_insert、および resolve_conflict。
このスクリプトは SQL で実装してください。 Java または .NET のローの処理については、ダイレクトローハンドリングを参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |