Chinaunix首页 | 论坛 | 博客
  • 博客访问: 52444
  • 博文数量: 25
  • 博客积分: 2015
  • 博客等级: 大尉
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-16 17:34
文章分类
文章存档

2008年(25)

我的朋友

分类: Oracle

2008-03-11 13:47:23

临时表是阶段性的保存数据.
 
创建会话内保留行的临时表
>conn scott/tiger
 
>create global temporary table tmp1
on commit preserve rows
as select * from emp;
 
>select * from emp; 可以看到有记录数据
 
>disconn
 
>conn scott/tiger
 
>select * from tmp1; 从新连接就没有数据了.
 
tmp1是会话级的临时表,在一个会话期间内,表的数据是存在的,存在于排序段,每个会话是隔离的,也就是说每个会话只能看到自己的数据,就是是提交了,别的会话也看不到.因为临时表存在于临时段中,而排序段是会话所专有的.每个会话只能看到自己的数据.
当我们有多个会话在同时使用临时表的时候,我们会发现有多个排序段在活动.每个会话只是使用临时表在系统表空间中的定义,所以我们drop表的时候不会去回收站,而是直接从字典中删除.
 
 
 
 
创建事物内保存行的临时表
>drop table tmp2;
>create global temporary table tmp2
 as select * from emp;
 
>select * from tmp2;  没有数据
 
>insert into tmp2 select * from emp;
 
>select *  from tmp2;  没有数据
 
>commit;
 
>select * from tmp2;  没有数据
 
tmp2是事物级的表,当事物结束的时候表的数据会自动的删除.
 
阅读(657) | 评论(0) | 转发(0) |
0

上一篇:随笔

下一篇:在线回收高水位

给主人留下些什么吧!~~