リモートデータベースからローを削除するには、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 デバイスには当てはまりません。
子レコードの削除の詳細については、参照整合性と同期を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |