create global temporary table aabb
on commit preserve rows
as 
select * from  dept;创建的aabb这个临时表时,如果没有加这句话(on commit preserve rows)的时候为什么无法查询到数据。
这句话(on commit preserve rows)的具体含义是什么、 请各位帮忙解释一下

解决方案 »

  1.   

    on commit preserve rows意思是在事务提交时保留临时表的数据(
    另一会话还是不能查询到,临时表是独立于会话的)
    on commit delete rows是创建临时表的默认选项,意即,事务提交时删除数据。create global temporary table aabb
    on commit preserve rows
    as 
    select * from dept;
    上述创建临时的表的语句为什么默认或指定on commit delete rows,创建完后
    没有数据,原因是,创建临时表并复制数据后,ddl执行了隐含commit,所以会
    没有数据,
      

  2.   

    ON COMMIT DELETE ROWS:事务临时表,每次提交后ORACLE将清空表(truncate)  
    ON COMMIT PRESERVE ROW: 会话临时表,当中断会话时ORACLE将清空表。

    oracle临时表简介