Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link イベント » 同期イベント

 

upload_fetch テーブル・イベント

ローレベルの競合検出の目的で、統合データベース内の同期テーブルからローをフェッチします。

パラメータ

SQL スクリプトのパラメータ名

順序

r.primary-key-1

1

r.primary-key-2

2

...

...

r.primary-key-N

N
デフォルトのアクション

なし

備考

文ベースの upload_fetch スクリプトは、競合検出の目的で、同期テーブルからローをフェッチします。このスクリプトは、upload_update イベントに対応します。

結果セットのカラム数は、このテーブルについてリモート・データベースからアップロードされるカラムの数と一致します。返される値がアップロードされるローの更新前のイメージと一致しないと、競合が識別されます。

upload_fetch スクリプトでは READPAST テーブル・ヒントを使用しないでください。スクリプトが READPAST を使用してロックされたローをスキップした場合、同期論理は、そのローが削除されたものとみなします。これにより、定義したスクリプトに応じて、アップロードされた更新が無視されるか、または競合解決がトリガされます。更新の無視は、許容されない動作であることが多く、問題になる場合があります。実装している解決論理によっては、競合解決がトリガされても問題にならない場合があります。

リモート・データベースのテーブルごとに、upload_fetch または upload_fetch_column_conflict スクリプトを 1 つのみ指定できます。

以下のスクリプトが 1 つも定義されていない場合、このスクリプトは無視されます。upload_new_row_insert、upload_old_row_insert、resolve_conflict

参照
SQL の例

次の SQL スクリプトは、Contact の例から抜粋したもので、samples-dir\MobiLink\Contact\build_consol.sql にあります。リモート・データベースの Product テーブル内で更新されるローのアップロード時に発生する競合を識別するために使用されます。このスクリプトは、テーブル Product からローを選択しますが、統合データベースとリモート・データベースのスキーマによっては、2 つのテーブルの名前が一致しない場合があります。

CALL ml_add_table_script(
  'ver1',
  'Product',
  'upload_fetch',
  'SELECT id, name, size, quantity, unit_price
   FROM Product 
   WHERE id={ml r.id}' )
Java の例

このスクリプトは有効な SQL を返します。

次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、uploadFetchTable という Java メソッドを upload_fetch テーブル・イベント用のスクリプトとして登録します。

CALL ml_add_java_table_script(
  'ver1',
  'Product',
  'upload_fetch',
  'ExamplePackage.ExampleClass.uploadFetchTable' )

次に示すのは、サンプルの Java メソッド uploadFetchTable です。このメソッドは、UPLOAD 文を動的に生成する genUF を呼び出します。

public String uploadFetchTable() {
  return( genUF(_curTable) ); 
}
.NET の例

このスクリプトは有効な SQL を返します。

次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、UploadFetchTable という .NET メソッドを upload_fetch テーブル・イベント用のスクリプトとして登録します。

CALL ml_add_dnet_table_script(
  'ver1',
  'Product',
  'upload_fetch',
  'TestScripts.Test.UploadFetchTable' )

次に示すのは、サンプルの .NET メソッド UploadFetchTable です。このメソッドは、UPLOAD 文を動的に生成する GenUF を呼び出します。

public string UploadFetchTable() {
  return( GenUF(_curTable) ); 
}