日付の競合を解決する方法を説明するため、交渉管理システムのテーブルの 1 つに、各顧客との最新の交渉日のデータを保持するカラムがあるとします。
ある担当者が金曜日に顧客と交渉を行いましたが、この担当は、変更を月曜日まで統合データベースにアップロードしません。一方、別の担当者が土曜日に同じ顧客と交渉し、変更をその日の夕方に更新しました。
土曜日に更新が統合データベースにレプリケートされても競合は発生しませんが、月曜日に更新が受信された時点で、ローがすでに変更されていることがわかります。
デフォルトでは月曜日の更新が処理され、金曜日を最新の交渉日とする、間違った情報を持つカラムが残されます。ただし、このカラムの更新の競合は、最新の日付をローに挿入して解決してください。
次の RESOLVE UPDATE トリガは、新しい 2 つの値から最新のものを選択して、データベースにその値を入力します。
CREATE TRIGGER contact_date RESOLVE UPDATE ON Contacts REFERENCING OLD AS old_name NEW AS new_name FOR EACH ROW BEGIN IF new_name.contact_date < old_name.contact_date THEN SET new_name.contact_date = old_name.contact_date END IF END; |
更新される値が置き換える値よりも新しい場合は、新しい値はリセットされて、変更されないままエントリが残されます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |