ローレベルの競合検出の目的で、統合データベース内の同期テーブルからローをフェッチします。
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 スクリプトは、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}' ) |
このスクリプトは有効な 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) ); } |
このスクリプトは有効な 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) ); } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |