为了说明如何解决日期冲突,假设联系人管理系统中某个表的一个列保存着与每个客户的最新联系信息。
某销售代表在星期五与某客户进行了业务洽谈,但直到下个星期一才将更改上载到统一数据库。同时,另一个销售代表在星期六会见了该客户,并在当晚更新了更改。
当星期六的更新复制到统一数据库时没有冲突,但当星期一的更新到达时,它发现该行已经更改。
缺省情况下,星期一的更新将继续进行,在该列上留下不正确的信息,即,最近的联系发生在星期五。但是,应该通过在行中插入最新日期来解决此列上的更新冲突。
以下 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; |
如果要更新的值时间晚于要替换它的值,则新值将被重设,使该条目保持不变。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |