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

SAP Sybase SQL Anywhere 16.0 » SQL Remote » SQL Remote システムの作成

 

更新の競合

データが読み取り用に共有されている場合、または各ロー (プライマリキーによって識別される) が 1 つのデータベースのみで更新される場合、更新の競合は発生しません。複数のデータベースでデータが更新された場合にのみ、更新の競合が発生します。

UPDATE 文をレプリケートするため、SQL Remote はローごとに個別の UPDATE 文を発行します。これらのシングルロー文は、次のいずれかの理由で失敗する場合があります。

  • 更新するローが 1 つまたは複数のカラムで異なる   存在するはずの値の 1 つが他のユーザによって変更された場合、「更新の競合」が発生します。

    リモートデータベースでは、ローの値にかかわらず更新が実行されます。

    統合データベースでは、SQL Remote によって「競合解決」オペレーションが実行されます。たとえば、競合が検出されると、統合データベースでは次の処理を実行できます。

    • デフォルトによる競合解決を使用する。

    • VERIFY 句を使用する、カスタマイズされた競合解決を使用する。

    • トリガを使用する、カスタマイズされた競合解決を使用する。

    注意

    UPDATE 文の競合は、プライマリキーの更新には適用されません。SQL Remote システムで、プライマリキーを更新しないでください。適切な設計を行って、プライマリキーの競合をシステムから取り除く必要があります。

  • 更新するローが存在しない   個々のローはプライマリキーの値によって識別されます。ローが削除されたり、プライマリキーが別のユーザによって変更されたりしている場合は、更新すべきローが見つかりません。

    リモートデータベースでは、更新は行われません。

    統合データベースでは、更新は行われません。

  • 主キー制約または一意性制約のないテーブルはレプリケートされた更新の WHERE 句のカラムをすべて参照する   2 つのリモートデータベースで同じローが別々に更新され、その変更が統合データベースにレプリケートされた場合は、統合データベースに到着した最初の変更が適用され、2 番目のデータベースの変更は適用されません。

    そのため、データベースの整合性が失われます。したがって、レプリケートされたすべてのテーブルに主キー制約または一意性制約を持たせ、制約対象のカラムが更新されないようにする必要があります。

 参照

更新の競合に対するデフォルトの解決
VERIFY 句を使用したカスタム競合解決
トリガを使用したカスタム競合解決