SQL Remote は、VERIFY 句を使用するメッセージの中で UPDATE 文を生成します。UPDATE 文は、既存の 1 つ以上のローの値を新しい値に変更します。VERIFY 句を含む UPDATE 文には、そのローの既存の値も含まれています。
UPDATE 文を適用すると、統合データベースは既存のローの値を、リモートデータベースで既存のローの値が変更された後に期待される値と比較します。更新の競合は、VERIFY 句の値がデータベースのローと一致しない場合に、データベースサーバによって検出されます。
たとえば、更新の競合は、次のような順序でイベントが実行されると発生します。
ユーザ 1 が、リモートサイト 1 でローを更新します。
ユーザ 2 が、リモートサイト 2 で同じローを更新します。
ユーザ 1 による更新内容が、統合データベースに送信されて適用されます。
ユーザ 2 による更新内容が、統合データベースに送信されます。
UPDATE 文に VERIFY 句が含まれているため、統合データベースは競合を検出できます。統合データベースでは、SQL Remote がローに含まれている値を、ユーザ 2 が送信した古いロー値と比較します。これらの値は同じではないため、更新の競合が発生します。
更新の競合が検出されると、統合データベースでは次の処理を実行します。
オペレーションに対して定義された、すべての競合解決トリガを起動します。
「競合解決トリガ」を定義して、更新の競合を処理します。競合解決トリガは、リモートユーザがメッセージを適用する場合に、統合データベースでのみ起動されます。
UPDATE 文を実行します。
競合解決トリガのすべてのアクションと UPDATE 文が、すべてのリモートデータベースに送信されます。この中には、その競合をトリガするメッセージを送信したリモートデータベースも含まれています。
通常、SQL Remote は、トリガアクションをレプリケートしません。これは、トリガがリモートデータベースにあることを想定しているためです。競合解決トリガは統合データベースでのみ起動されるため、このトリガアクションはリモートデータベースにレプリケートされます。
リモートデータベースは、統合データベースから UPDATE 文を受信します。
リモートデータベースでは、統合データベースからのメッセージに更新の競合が含まれていると、RESOLVE UPDATE トリガは起動されません。
リモートデータベースで、UPDATE 文が処理されます。
プロセスの最後では、システム全体でデータの一貫性が保たれます。
VERIFY 句を持つ UPDATE 文
verify_all_columns オプション
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |