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

SQL Anywhere 12.0.1 » Mobile Link サーバー管理 » Mobile Link イベント » 同期スクリプトの作成 » ローをダウンロードするスクリプト

 

download_delete_cursor スクリプト

リモートデータベースからローを削除するには、download_delete_cursor スクリプトを作成します。このスクリプトは、ダウンロードに関係するリモートデータベースの各テーブルに 1 つ作成してください。ローを削除しない場合は、各スクリプトを --{ml_ignore} として定義します。または、ml_add_missing_dnld_scripts システムプロシージャーを使用して、見つからないダウンロードスクリプトを無視するものとして定義します。 ml_add_missing_dnld_scripts システムプロシージャーを参照してください。

統合データベースからのローの削除のみを実行し、リモートデータベースからローを消去することはできません。削除されたローのプライマリキーを download_delete_cursor で選択できるようにするため、そのローのプライマリキーを追跡する必要があります。こうするには、以下の 2 つの一般的な方法があります。

  • 論理削除   統合データベースのローを物理的に削除しないでください。その代わり、ローが有効であるかどうかを追跡するステータスカラムを使用します。このようにすると、download_delete_cursor を簡略化できます。ただし、ステータスカラムを認識して使用できるように、download_cursor とその他のアプリケーションを修正しなければならない場合があります。削除の時刻を保持する最終変更カラムが存在し、各リモートの最終ダウンロード時刻の追跡を行っている場合は、すべてのリモートのダウンロード時刻が削除の時刻よりも早ければ、ローを物理的に削除できます。

  • シャドウテーブル   削除に関する追跡を実行する各テーブルには、テーブルのプライマリキーを保持するカラムとタイムスタンプを保持するカラムの 2 つを含むシャドウテーブルを作成します。ローが削除されたときにプライマリキーとタイムスタンプをシャドウテーブルに挿入するトリガーを作成します。このようにすると、download_delete_cursor はこのシャドウテーブルから選択できるようになります。論理削除と同様に、すべてのリモートデータベースによって対応するデータがダウンロードされれば、シャドウテーブルからローを削除できます。

Mobile Link サーバーは、統合データベースからプライマリキー値を選択し、それらをリモートデータベースに渡すことによって、リモートデータベースのローを削除します。値がリモートデータベース内のプライマリキーの値と一致する場合、そのローを削除します。

  • 削除をダウンロードする各 download_delete_cursor スクリプトには、SELECT 文か、結果セットを返すストアドプロシージャーの呼び出しが必要です。Mobile Link サーバーは、SELECT 文を使用して統合データベース内でカーソルを定義します。

  • download_delete_cursor で常にローを選択しない場合は、スクリプトを --{ml_ignore} として定義します。

  • SELECT 文では、リモートデータベース内のテーブルのプライマリキーカラムに対応するすべてのカラムを選択します。統合データベース内のカラムは、対応するリモートデータベースのカラムとは異なる名前にできますが、互換性のある型にしてください。

  • 値は、対応するカラムがリモートデータベース内で定義されている順序に従って選択します。この順序は、テーブルの作成に使用される CREATE TABLE 文のカラム順と同じですが、プライマリキーを定義する文中のカラム順とは異なります。

  • download_delete_cursor を使用してリモートデータベースの親レコードを削除すると、子レコードも自動的に削除されます。これは、Blackberry デバイスには当てはまりません。

    子レコードの削除の詳細については、参照整合性と同期を参照してください。

 テーブルから全ローを削除
 参照
 例
 注意