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