on commit delete rows和on commit preserve rows不是两条命令,它是创建临时表语句的两个子句。

解决方案 »

  1.   

    --注意你的版本
    15:23:49 jlanzpa817>CREATE GLOBAL TEMPORARY TABLE flight_schedule (
    15:35:53   2     startdate DATE, 
    15:35:53   3     enddate DATE, 
    15:35:53   4     cost NUMBER)
    15:35:53   5  ON COMMIT PRESERVE ROWS;表已创建。15:37:53 jlanzpa817>CREATE GLOBAL TEMPORARY TABLE flight_schedule1 (
    15:38:03   2      startdate DATE, 
    15:38:03   3      enddate DATE, 
    15:38:03   4      cost NUMBER)
    15:38:03   5     ON COMMIT DELETE ROWS;表已创建。已用时间:  00: 00: 00.20
    15:38:04 jlanzpa817>
      

  2.   

    CREATE GLOBAL TEMPORARY TABLE TABLENAME (
       COL1  VARCHAR2(10),
       COL2  NUMBER
    ) ON COMMIT PRESERVE(DELETE) ROWS ;
      

  3.   

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