java oracle 临时表_ORACLE 临时表

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) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值