假如oracle里有4张表,每张表各取其中2个字段组成一张新的表,现在我要创建存储过程在旧表里有该如何同

假如oracle里有4张表,每张表各取其中2个字段组成一张新的表NEW,现在我要创建存储过程在旧表里有数据变化(insert,delete,update)的时候该如何同步更新新表NEW的数据?数据量很大,希望增量同步。望大侠指导
NEW表中还会增加其他如updatetime和jsessionId等字段,视图不太好使吧,因为这张表需要同步到sqlserver那边,所以这张表还是需要的。我想知道如何通过这两个字段可以实现增量更新,意思就是不要首先就delete掉表中数据再全部插入,而是只更新那些有变化的数据。类似这样的存储过程或者触发器该如何写,是不是要在每张表上都挂上触发器?

如果你需要实时更新的,我还是建议你用视图。每次查询都是最新的数据。
如果你真的需要另外一张表的话导出数据之后可以在原来的表上挂上触发器,或者选用物理视图(不过这个需要你自己手动更新)。

补充回答:
你首先要确定的是你NEW表需要的数据实时性:
1. 实时:这个时候你必须挂上触发器,或者通过变更应用程序实现双写;这时要处理旧数据的转移就最好先封锁数据库一段时间,带数据转移完毕再解封。
2. 非实时:这种情况可能类似一张统计表,每天更新。这样就不用挂触发器,可以记录上一次处理数据的最后ID然后下次开始同步的时候就按照上次记录位置开始。因为一般情况下数据库的主键采用自增型主键,这样就可以实现增量同步。来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-07
这种情况创建新表NEW,不如创建试图好吧?新表的内容你只需要查询不需要增删改,所以试图更合适。
第2个回答  2013-03-07
楼主需要对新表NEW做除了查询外的其他操作吗?如果没有,真不建议建新表,视图很合适