ORACLE数据库除了可以保存永久表外,还可以建立临时表。临时表是存储在临时表空间里面的,且不记录日志的,NOLOGGING的。 1.临时表可以创建临时的索引、视图、触发器 2.如果要DROP会话级别临时表,并且其中包含数据时,必须先截断其中的数据。否则会报错。 3.临时表不会有DML 锁 4.临时表不能永久的保存数据 5.不支持主外键关系 临时表有两种 1.会话级临时表 会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。

Create Global Temporary Table Table_Name
(
id number
name varchar2(20)
...
)
On Commit Preserve Rows;

2.事务级临时表 事务级临时表是指临时表中的数据只在事务生命周期中存在,当一个事务结束(commit or rollback),Oracle自动清除临时表中数据

Create Global Temporary Table Table_Name
(
id number
name varchar2(20)
...
)
On Commit Delete Rows;

注意:虽然临时表会在退出会话,或提交事务回滚事务后自动清除数据,但是临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。