1.概念特性
临时表用来保存一个会话SESSION或一个事务中需要的数据。当会话退出或事务结束时,临时表的数据自动清空,但是表结构及元数据
依旧会存储在用户的数据字典中。
临时表不是存放于用户表空间,而是存入于指定的临时表空间中,没有指定临时表(包括其索引)存入的表空间的时间,临时表的数据则
存放于系统的临时表空间中(TEMP)。
临时表上可以创建索引,视图和触发器,可以用EXPORT 和 IMPORT 工具导入和导出表的定义,但是不能导出数据,表的定义对所有的会话可见。
建立在临时表的索引也是临时的,也只对当前会话或事务有效。
对临时表的DML操作速度相对较快,但是也要产生Redo log,只是同样的DML,比对PERMANENT的DML产生的Redo log相对要少。
2.临时表的缺陷:
1.不支持LOB对象。
2.不支持主外键关系
3.应用场景
1.比如购物网站,在整个SESSION中保存购物车信息。采用(ON COMMIT PRESERVE ROWS)的方法解决。
2.存储中间数据。比如数据分析应用。
4.会话临时表(session级别):
SQL> create global temporary table test(id number) on commit preserve rows;
Table created
SQL> select * from test;
ID
----------
SQL> insert into test(1);
insert into test(1)
ORA-00928: 缺失 SELECT 关键字
SQL> insert into test values(1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
ID
----------
1
SQL> insert into test values(2);
1 row inserted
SQL> select * from test;
ID
----------
1
2
SQL> rollback ;
Rollback complete
SQL> select * from test;
ID
----------
1
5.事务临时表
SQL> drop table test;
Table dropped
如删除不掉,请重新登录,再删除。
SQL> create global temporary table test(id number) on commit delete rows;
Table created
SQL> insert into test values(1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
ID
----------
阅读(458) | 评论(0) | 转发(0) |