很多时候我们需要对数据库进行增量更新,比如从TimesTen数据库导入数据到MySql数据库中。为了保证导入是增量的,我们必须跳过那些没有被修改过的数据,现在比较流行的方法是使用时间戳, 也就是定义一个类型为timestamp的新列。当我们对这个表增加或删除行时,必须更新这个列的数据,以反映行被更新过了。
以TimesTen为例,我们可以用下面的方式创建一个表:
CREATETABLE PEOPLE(ID INTPRIMARYKEY, NAME VARCHAR2(255),
LAST_UPDATE TIMESTAMPDEFAULT TT_SYSDATE NOTNULL);
LAST_UPDATE TIMESTAMPDEFAULT TT_SYSDATE NOTNULL);
LAST_UPDATE列就使用了时间戳类型,用来保存最近一次更新的时间。在插入时我们不需要管这个列,因为列不能为空,当前时间会自动填入这个列。不过我们用Update语句更新时必须刷新这个列,例如:
UPDATE PEOPLE SET NAME='SB',LAST_UPDATE=TT_SYSDATE WHERE ID =1;
当我们需要增量更新时,只要保存上一次导出数据的系统时间(TT_SYSDATE),然后查询的时候选择LAST_UPDATE大于这个值得行就能获得最近更新过的数据,然后将他们导出到其他库就行了。