oracle10G,表RealData,字段 ID, DT(时间),v0,v1,v2,v3....
ID和DT合为主键,定时有数据进入表中
现在如何定时将ID为1000的新记录的v0,v1,v2,...处理后(比如都放大2倍)写成ID为2000的新记录

解决方案 »

  1.   

    定时修改主键,听起来感觉不是很好的一个解决方案。更新语句如下:update realdata set id = id * 2 where id = 1000
      

  2.   


    insert into readdata select id*2, xxxx, xxxx where id = 1000
      

  3.   

    用insert 
    insert into tabname
    select * from tablename
      

  4.   

    先谢谢各位的回复
    表中的数据是实时增加的,我是想请教,如何弄,才能让“insert into readdata select id*2, xxxx, xxxx where id = 1000”自动执行
      

  5.   

    要定时处理吗
    可以通过job来实现
    ID是可以重复的?那么你需要添加一个字段,比如更新时间
    否则没法辨认哪些是新增加的数据
      

  6.   

    update a1 set costom4id=null;
    alter table a1 modify costom4id varchar2(20);
    alter table a1 rename column costom4id to costom4label;
      

  7.   

    我的表中有时间字段DT,且一定是递增的,在job里能不能把上次运行时最新一条记录的时间存到变量中,下次运行是拿出来放到where语句中
      

  8.   

    创建视图的话,我的程序就要改动了,要把访问RealData表的地方都切换到视图上
    我就是不想改程序,才想在数据库上做手脚
      

  9.   


    不好意思,前面有两条是发错地方了
    这个可以实现
    比如10分钟更新一次,那么条件用
    where dt>sysdate-1/24/6
      

  10.   

    可以写一个储存过程,然后创建job定时调用此储存过程。最新一条记录的时间存到辅助表中,每次调用存储过程时读取此辅助表中的最后一次更新时间,ok
      

  11.   

    物化视图不需要你修改程序,不会影响你的sql