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

SQL Anywhere 11.0.1 (中文) » SQL Remote » SQL Remote 复制设计 » SQL Remote 复制设计和设置 » 更新冲突 » 使用触发器的自定义冲突解决方法

 

解决日期冲突

为了说明如何解决日期冲突,假设联系人管理系统中某个表的一个列保存着与每个客户的最新联系信息。

某销售代表在星期五与某客户进行了业务洽谈,但直到下个星期一才将更改上载到统一数据库。同时,另一个销售代表在星期六会见了该客户,并在当晚更新了更改。

当星期六的更新复制到统一数据库时没有冲突,但当星期一的更新到达时,它发现该行已经更改。

缺省情况下,星期一的更新将继续进行,在该列上留下不正确的信息,即,最近的联系发生在星期五。但是,应该通过在行中插入最新日期来解决此列上的更新冲突。

实现解决方案

以下 RESOLVE UPDATE 触发器选择两个新值中较新的一个并将其输入到数据库中。

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;

如果要更新的值时间晚于要替换它的值,则新值将被重设,使该条目保持不变。