BlackBerry または J2SE 用の Ultra Light を除くすべての Mobile Link クライアントは、ダウンロードをリモートデータベースに組み込むときに参照整合性を確保します。
参照整合性に違反するローがあった場合、デフォルトでは、Mobile Link クライアントはダウンロードトランザクションを失敗させずに、参照整合性に違反するすべてのローを自動的に削除します。
この機能には次のような利点があります。
同期スクリプトの間違いから保護します。スクリプトに柔軟性があると、リモートデータベースの整合性をそこなうローを誤ってダウンロードしてしまうことがあります。Mobile Link クライアントは、介入を要求せずに参照整合性を自動的に管理します。
この参照整合性のメカニズムを使用して、リモートデータベースから情報を効率的に削除できます。親レコードに削除データを送信するだけで、Mobile Link クライアントはすべての子レコードを自動的に削除します。これにより、Mobile Link がリモートデータベースに送信するトラフィックの量を大幅に減らすことができます。
Mobile Link クライアントは、参照整合性を維持するためにローを明示的に削除する必要がある場合、次のような通知を行います。
SQL Anywhere クライアントの場合は、dbmlsync によってログにエントリが書き込まれます。dbmlsync イベントフックも使用できます。 次の項を参照してください。
Ultra Light クライアントの場合は、SQLE_ROW_DELETED_TO_MAINTAIN_REFERENTIAL_INTEGRITY 警告が発生します。この警告には、テーブル名のパラメーターが含まれます。参照整合性を維持するため、削除されるすべてのローで警告が発生します。同期をそのまま進める場合は、警告を無視してかまいません。警告を明示的に処理する場合は、エラーコールバック関数を使用して警告をトラップします。さらに、削除されたローの数を取得することもできます。
警告が発生したときに同期を失敗させるには、同期 observer を実装し、observer に (グローバル変数などを使用して) エラーコールバック関数から信号を送信する必要があります。この場合、同期は observer への次回の呼び出しで失敗します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |