create global temporary table temp_test
(
  a number,
  b varchar2(10)...
)
on commit delete rows;

解决方案 »

  1.   

    临时表:
    CREATE GLOBAL TEMPORARY TABLE TABLENAME (
       COL1  VARCHAR2(10),
       COL2  NUMBER
    ) ON COMMIT PRESERVE(DELETE) ROWS ;
    这种临时表不占用表空间,而且不同的SESSION之间互相看不到对方的数据
    在会话结束后表中的数据自动清空,如果选了DELETE ROWS,则在提交的时候即清空数据,PRESERVE则一直到会话结束
      

  2.   

    CREATE GLOBAL TEMPORARY TABLE test (
       aaa  VARCHAR2(10),
       bbb  NUMBER
    ) ON COMMIT PRESERVE ROWS ;insert into table values('test',1);
    commit;
    select * from test;
     aaa          bbb
     test          1exit;(退出该事务)
    sqlplus重新进入
    select * from test;
    无记录
    在任何数据库中,临时表的一个缺点是:事实上优化器在临时表中没有真正的统计功能。然而,在oracle中,一系列较好的统计猜测可以通过DBMS_STATS包在临时表中设置。
      

  3.   

    THANKS,
    各位大侠, 在大数量时, 大并发, 多用户时, 使用临时表与普通表各有什么优缺点?如同步/死锁等等问题?
      

  4.   

    各位大侠, 在大数量时, 大并发, 多用户时, 使用临时表与普通表各有什么优缺点?
    ------------------------------------------------------------------------
     根据你的应用制定一个可用的Lock policy就可以了。修改时加行锁,事务
     尽可能小,事务完成后尽快提交。
      

  5.   

    to  leecooper0918,
    在ORACLE中,
    怎么制定Lock policy.
      

  6.   

    thanks  beckhambobo(beckham),
      

  7.   

    临时表是在内存中放不完时才放到temp表空间中去的