ORACLE临时表有两种类型:会话级的临时表和事务级的临时表。
1)ON COMMIT DELETE ROWS 事物级
它是临时表的默认参数,表示临时表中的数据仅在事物过程(Transaction)中有效,当事物提交(COMMIT)后,临时表的暂时段将被自动截断(TRUNCATE),但是临时表的结构 以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。2)ON COMMIT PRESERVE ROWS 会话级
它表示临时表的内容可以跨事物而存在,不过,当该会话结束时,临时表的暂时段将随着会话的结束而被丢弃,临时表中的数据自然也就随之丢弃。但是临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。会话级临时表创建
create global temporary table my_temporary(id number, name varchar2(20)) on commit preserve rows;--或者create global temporary table my_temporary on commit preserve rows as select * from other_tables;
事物级临时表创建
create global temporary table my_temporary(id number, name varchar2(20)) on commit delete rows;--或者create global temporary table my_temporary on commit delete rows as select * from other_tables;