通常、文ベースのアップロード用の競合解決スクリプトは、リモートデータベースからアップロードされるローの古い値と新しい値にアクセスする必要があります。このデータスクリプトイベントを使用すると、リモートデータベースからアップロードされるローの更新済みの新しい値を処理できます。
SQL スクリプトでは、名前または疑問符を使用してイベントパラメータを指定できます。疑問符の使用は推奨されなくなりました。名前付きパラメータを使用することをおすすめします。1 つのスクリプト内で名前と疑問符を混在させることはできません。疑問符を使用する場合、パラメータは以下に示す順に指定する必要があり、後続のパラメータが指定されていない場合のみ省略可能です (たとえば、パラメータ 2 を使用する場合は、パラメータ 1 を使用してください)。名前付きパラメータを使用する場合は、パラメータの任意のサブセットを任意の順に指定できます。
SQL スクリプトのパラメータ名 | 説明 | 順序 (SQL では非推奨) |
---|---|---|
s.remote_id |
VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 |
適用外 |
s.username |
VARCHAR(128)。Mobile Link ユーザ名。このパラメータは省略可能です。 |
オプション (参照される場合は 1) |
s.script_version | VARCHAR(128)。Mobile Link サーバが現在の同期に使用しているスクリプトバージョン文字列をこのパラメータに渡すことを指定する、オプションの IN パラメータ。このパラメータの指定に疑問符を使用することはできません。 |
適用外 |
r. column-1 |
必須。カラム名またはカラム番号で参照される、新しい (更新後イメージ) ローの最初のカラム値。 |
1 (username を参照する場合は 2) |
... | ... | ... |
r. column-N |
必須。カラム名またはカラム番号で参照される、新しい (更新後イメージ) ローの最後のカラム値。 |
N (username を参照する場合は N+1) |
なし
Mobile Link クライアントが更新済みのローを Mobile Link サーバに送信するときは、新しい値 (更新後イメージ) だけでなく、古いローの値 (更新前イメージ) のコピーも含まれています。更新前イメージが統合データベースの現在の値と一致しないと、競合が検出されます。
Mobile Link による競合の検出後、このイベントを使用すると、更新後イメージの値をテーブルに保存できます。このイベントは、更新用の競合解決プロシージャ開発を支援するために使用できます。このイベントのパラメータは、対応する統合データベーステーブルで更新が実行される前のリモートデータベースからの新しい値を保持しています。また、強制的な競合モードで、ローを挿入するために使用されます (強制的な競合モードは推奨されなくなりました)。
通常、競合検出は、upload_update スクリプトで一度に実行するとより速く実行されます。 upload_update テーブルイベントを参照してください。
このイベントのスクリプトは、resolve_conflict スクリプトが使用するテンポラリテーブルに新しいローを挿入する INSERT 文である場合がほとんどです。
リモートデータベースのテーブルごとに、upload_new_row_insert スクリプトを 1 つ指定できます。
このスクリプトは SQL で実装してください。 Java または .NET のローの処理については、ダイレクトローハンドリングを参照してください。
この例は、リモートデータベース内の product テーブルに対する更新を処理します。このスクリプトは、ローの新しい値をグローバルなテンポラリテーブル product_conflict に挿入します。このテーブルの最後のカラムでは、ローが新しいローとして識別されます。
CALL ml_add_table_script( 'ver1', 'table1', 'upload_new_row_insert', 'INSERT INTO DBA.product_conflict( id, name, size, quantity, unit_price, row_type ) VALUES( {ml r.id}, {ml r.name}, {ml r.size}, {ml r.quantity}, {ml r.unit_price}, ''New'' )' ) |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |