临时表,顾名思义,就是临时存储数据的表。
具体讲,用来保存一个会话session的数据, 或者保存在一个事务中需要的数据。
当会话退出或者用户提交commit和回滚rollback事务的时候,
临时表的数据自动清空(truncate),但是临时表的结构以及元数据还存储在用户的数据字典中。
临时表分为两种:会话临时表,事务临时表。
1.会话临时表
临时表中的数据只对当前Session有效,每个Session都有自己的临时数据,
并且不能访问其它Session的临时表中的数据。因此,临时表不需要DML锁.
当一个会话结束(用户正常退出 用户不正常退出 ORACLE实例崩溃)或者一个事务结束的时候,
Oracle对这个会话的表执行 TRUNCATE 语句清空临时表数据.但不会清空其它会话临时表中的数据.
2.事务临时表
事务级临时表是指临时表中的数据只在事务生命周期中存在。
当一个事务结束(commit or rollback),Oracle自动清除临时表中数据
临时表的特性
1.当我们truncate临时表时,至于当前会话的临时表数据被清除。
2.会话结束或事务提交时,当前会话临时表的数据自动清除,包括非正常结束会话。
3.可以在临时表上建立索引(临时索引)
4.可以基于临时表和永久表建立视图
5.还可以建立触发器与临时表关联起来
6.导入导出工具可以用来转移表的定义,但是并不能转移表中的数据。
7.根据不同的版本,对临时表有很多限制。