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;
注意:虽然临时表会在退出会话,或提交事务回滚事务后自动清除数据,但是临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。
本文转自 rm_rf_d 51CTO博客,原文链接:http://blog.51cto.com/12185273/2063996,如需转载请自行联系原作者