ローを統合データベースから削除する場合、そのローを持つすべてのリモート・データベースからも削除できるように、ローの記録が必要です。これを行う 2 つの方法として、論理削除を使用する方法と、シャドー・テーブルを使用する方法があります。
論理削除 この方法では、ローは削除されません。不要になったデータについては、ステータス・カラムで非アクティブのマークが付けられます。download_cursor と download_delete_cursor の WHERE 句では、ローのステータスを参照できます。
この方法は、CustDB サンプル・アプリケーションの ULEmpCust テーブルで使用されており、テーブルのアクション・カラムには削除を示す "D" が入っています。スクリプトでは、この値を使用してリモート・データベースからレコードを削除し、さらに、同期処理の最後に統合データベースからもレコードを削除します。CustDB ではこの方法を ULOrder テーブルに使用し、Contact サンプルではこの方法を Customer、Contact、Product テーブルに使用しています。
Mobile Link 同期モデルでの論理削除のサポートは、論理削除カラムが統合データベースのみにあり、リモートにはないことを前提としています。統合スキーマを新しいリモート・スキーマにコピーする場合、モデルの同期設定の論理削除カラムに対応するすべてのカラムを除外します。新しいモデルでは、デフォルトのカラム名が削除されます。
論理削除カラム名をリモート・スキーマに追加するには、次の手順に従います。
同期モデル作成ウィザードの [削除のダウンロード] ページで、[論理削除を使用する] を選択します。
論理削除カラム名を変更し、統合データベースのどのカラム名とも一致しないようにします。
ウィザードが完了したら、リモート・スキーマを更新し、デフォルトのテーブル選択を保持します。論理削除カラム名がスキーマ変更リストに表示され、リモート・スキーマに追加されます。
リモートの論理削除カラムのカラム・マッピングを統合データベースの論理削除カラムに設定する必要があります。
シャドー・テーブル この方法では、シャドー・テーブルを作成し、削除したローのプライマリ・キー値をそこに格納します。ローが削除されると、1 つのトリガによってシャドー・テーブルが設定されます。download_delete_cursor スクリプトは、シャドー・テーブルを使用して、リモート・データベースからローを削除します。シャドー・テーブルには、実際のテーブルのプライマリ・キー・カラムだけが必要です。
download_delete_cursor スクリプトの作成を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |