カスタム競合解決はいくつかの手法を取ることができます。たとえば、アプリケーションによっては、解決は次のようになる可能性があります。
元のトランザクションの日付を比較します。日付の競合解決を参照してください。
2 つ以上の更新の結果に対して計算を実行します。在庫数の競合解決を参照してください。
競合をテーブルにレポートします。CURRENT REMOTE USER 特殊定数の使用を参照してください。
カスタム競合解決を使用するには、RESOLVE UPDATE トリガを記述する必要があります。
RESOLVE UPDATE トリガの起動後に、各ローが更新されます。RESOLVE UPDATE トリガの構文は、次のとおりです。
CREATE TRIGGER trigger-name RESOLVE UPDATE OF column-name ON table-name [ REFERENCING [ OLD AS old-val ] [ NEW AS new-val ] [ REMOTE AS remote-val ] ] FOR EACH ROW BEGIN ... END
REFERENCING 句を使用すると、更新するテーブルのロー値 (OLD)、更新用のロー値 (NEW)、VERIFY 句によれば存在するはずのロー (REMOTE) にアクセスできます。REMOTE AS 句の中で参照できるのは、VERIFY
句内のカラムのみです。その他のカラムの場合は、カラムが見つかりません。
というエラーが返されます。
DBREMOTE は、マニュアルに記載されていない REMOTE USER 文を実行すると、CURRENT REMOTE USER を設定します。値は、DBREMOTE からの接続の場合を除き、NULL になります。
競合のレポートをテーブルに配置する RESOLVE UPDATE トリガに CURRENT REMOTE USER を使用して、競合を発生させたユーザを特定できます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |