受上一篇中案例的启发, 对refresh_mysql角本作了一点点改进, 可以为DELETE目标数据库的SQL加一个WHERE条件, 以防止删除不想删除的数据. 举个简单的例子来说, 有一个产品数据和历史库, 产品库中只有今年的记录, 而历史库中包括所有(当前的和07年以前)的数据, 我们还需要将产品库的修改比较实时地反应到历史库中, 那么我有可能要经常在产品库中删除三个月以前的记录, 为了不让这些删除操作被复制到历史库中, 就可以加一个Where条件了, 如"CREATE_DATE > SYSDATE - 30", 这样的话, 就只能在历史库中更新最近三个月的记录了:
只需要refresh_mysql角本的配置文件后面再加一列, 如下所示:
# SOURCE # PKEY # MVIEW Log # TARGET
T_OBJECTS # OBJECT_ID # MLOG$_T_OBJECTS # T_OBJECGS # CREATE_DATE > SYSDATE - 30
这时在构造出来的删除目标表的SQL语句为:
DELETE T_OBJECTS WHERE OBJECT_ID = ? AND CREATE_DATE > SYSDATE - 30
其他的改进, 现在已经不是将UPDATE转化为先DELETE后INSERT了, 而是直接UPDATE, 以提高程序的效率, 减轻目标数据库的压力. 本角本可以免费使用, 但不提供免费的支持服务.