为了说明清楚一些,小弟先举个例子有两个表table_src(logtime,usertype)和table_des(logtime,usertype)现在要定时复制一次数据,我的写法是
select * into table_des from table_src where table_src.LogTime>(select Max(LogTime) From table_des)*因为是定时复制一次数据,所以有必要使用where子句但这个语句总说有错误,小弟搞不清楚什么地方错了,请高手指点一下...
另外还有什么别的方法实现吗?望高手指点...以前没接触过oracle,有什么谬误不要见笑了...

解决方案 »

  1.   

    insert into table_des 
    select * from table_src ts
    where table_src.LogTime>(select Max(LogTime) From table_des)
      

  2.   

    create trigger tri_rep
    after insert 
    on  table_src
    for each row
    begin
    insert into table_des values(:new.logtime,:new.usertype) ;
    end;
    /
      

  3.   

    create trigger tri_rep
    before insert on  table_src
    for each row
    a date;
    begin
    select max(logtime) into a from table_src;
    if :new.logtime>a then
    insert into table_des values(:new.logtime,:new.usertype) ;
    end if;
    end;
    /
      

  4.   

    我的这段语句已经是在一个trigger里面了啊
      

  5.   

    你那个写法是sql server tsql的写法,oracle不支持这样的写法.
    select ... into tab_dst from tab_src        --sql server
    ---> 
    insert into tab_dst(...) select (...) from tab_srt  --oracle
      

  6.   

    数据同步的话,用SNAPSHOT好了,要求有PK。
    CREATE SNAPSHOT LOG ON table_src
    /
    CREATE SNAPSHOT table_des
    AS                                                                            
    SELECT * FROM table_src
    /
    ALTER SNAPSHOT table_des
    REFRESH FAST                                 
    START WITH SYSDATE NEXT SYSDATE+10/1440
    /