数据同步方式很多
1,可以在数据库中加同步标识,
2,可以通过数据库触发器来记录更新的数据,
3,可以通过最后更新的时间戳来进行同步
下面采用新建一个触发器来触发更新,将更新的数据放入中间表。
TRIGGER "GCG."USER_UPDATE_TRIGGER" BEFORE INSERT OR UPDATE OF "ORGANIZATION_ID","ORGANIZATION_NAME","USER_NAME","USER_SN" ON "GCGM"."AUTH_USER" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW DECLARE
v_update_type VARCHAR2(50);
v_UPDATE_FILEDS VARCHAR2(255);
BEGIN
v_UPDATE_FILEDS := '|';
if inserting then
v_update_type := 'INSERT';
v_UPDATE_FILEDS :=v_UPDATE_FILEDS||'USER_SN'||'|'||'USER_NAME'||'|'||'ORGANIZATION_ID'||'|'||'ORGANIZATION_NAME'||'|';
elsif updating then
v_update_type := 'UPDATE';
END if;
IF :NEW.USER_SN != :OLD.USER_SN THEN
v_UPDATE_FILEDS := v_UPDATE_FILEDS ||'USER_SN'||'|';
end if;
IF :NEW.USER_NAME != :OLD.USER_NAME THEN
v_UPDATE_FILEDS := v_UPDATE_FILEDS ||'USER_NAME'||'|';
end if;
IF :NEW.ORGANIZATION_ID != :OLD.ORGANIZATION_ID THEN
v_UPDATE_FILEDS := v_UPDATE_FILEDS ||'ORGANIZATION_ID'||'|';
end if;
IF :NEW.ORGANIZATION_NAME != :OLD.ORGANIZATION_NAME THEN
v_UPDATE_FILEDS := v_UPDATE_FILEDS ||'ORGANIZATION_NAME'||'|';
end if;
-- :NEW.UPDATE_TIME :=SYSDATE;
INSERT INTO USER_UPDATE_LOG(ID,USER_SN,USER_NAME,ORGANIZATION_ID,ORGANIZATION_NAME,UPDATE_TYPE,UPDATE_FILEDS,UPDATE_TIME)
VALUES(:NEW.ID,:NEW.USER_SN,:NEW.USER_NAME,:NEW.ORGANIZATION_ID,:NEW.ORGANIZATION_NAME,v_update_type,v_UPDATE_FILEDS,SYSDATE);
END;