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

SQL Anywhere 11.0.1 (日本語) » Ultra Light データベース管理とリファレンス » Mobile Link クライアントとしての Ultra Light » Ultra Light クライアント » Ultra Light での同期の設計

 

Ultra Light のテーブルの順序

Table Order 同期パラメータを設定することで、同期操作の順序を制御できます。同期のテーブル順序を指定する場合は、Table Order パラメータをプログラムで使用するか、テスト中に ulsync ユーティリティの一部として使用します。Table Order パラメータは、アップロードするテーブルの順序を指定します。Additional Parameters 同期パラメータを参照してください。

テーブル順序は、Ultra Light データベースに次のいずれかがある場合にのみ明示的に設定します。

  • 外部キー循環。循環に含まれるすべてのテーブルをリストする必要があります。

  • 統合データベースとは異なる外部キー関係

外部キー循環に関連する同期の問題の防止

テーブル順序は、外部キー循環を使用する Ultra Light データベースに特に重要です。循環が形成されるようにテーブルをリンクさせると、循環が発生します。ただし、統合データベースと Ultra Light リモート間の循環が異なる場合は外部キー循環は複雑になるのでおすすめしません。

外部キー循環がある場合は、プライマリ・テーブルへの操作が先に実行され、関連する外部テーブルへの操作が後に実行される順序にテーブルを並べてください。Table Order パラメータによって、外部テーブルへの挿入が外部キーの参照整合性制約を満たしていることが保証されます (削除などの他の操作でも同様です)。

テーブル順序とは別に、同期の問題を防ぐ方法として、参照整合性を確認してから操作をコミットできます。統合データベースが SQL Anywhere データベースの場合は、1 つの外部キーを check on commit (コミット時にチェック) に設定します。このように設定すると、外部キーの参照整合性が、操作の開始時ではなくコミット・フェーズでチェックされます。次に例を示します。

CREATE TABLE c (
    id INTEGER NOT NULL PRIMARY KEY,
    c_pk INTEGER NOT NULL
);
CREATE TABLE p (
    pk INTEGER NOT NULL PRIMARY KEY,
    c_id INTEGER NOT NULL,
    FOREIGN KEY p_to_c (c_id) REFERENCES c(id)
);
ALTER TABLE c
   ADD FOREIGN KEY c_to_p (c_pk)
   REFERENCES p(pk)
   CHECK ON COMMIT;

他のデータベース・ベンダーの統合データベースを使用している場合は、参照総合性のチェックが同様の方法で行われているかどうかを確認します。同じであれば、この方法を実装します。方法が異なる場合は、すべての外部キー循環をなくすようにテーブル関係を再設計してください。

参照