Oracle的数据库的两种临时表
来源:互联网 发布:淘宝子账户怎么登录 编辑:程序博客网 时间:2024/05/19 02:39
我们在创建数据表的时候,若没有特殊的指明,那么我们创建的表是一个永久的关系型表格,也就是说,这个表格中对应的数据,除非是我们显示的删除的话,表中的数据是永远都存在的。
相对应的,在Oracle数据库中还有一种类型的表,叫做临时表。这个临时表跟永久表最大的区别就是表中的数据不会永远的存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除。
1、 事务临时表的管理。
(1) 事务临时表的创建。
Oracle数据库根据临时表的性质不同,可以分为事务临时表与会话临时表。事务临时表是指数据只有在当前事务内有效。一般情况下,如果在创建数据表的时候,没有特殊指明这表是会话临时表的话,则该表默认为事务临时表。
我们可以以下面的语句创建事务临时表。
Create global temporary table Temp_user
(ID NUMBER(12) Primary key,name varchar2(10));
这个创建临时表的语句中,虽然没有显性的指明该表是事务临时表,但是,默认的情况下,若没有指明是什么临时表的话,系统默认是事务临时表。我们要创建事务临时表时,可以不指定关键字。但是,这查看起来比较麻烦。我建议,无论在建立什么临时表,都要利用具体的关键字来显形的指明,这大家看起来都方便。一般可以利用ON COMMIT DELETE ROWS关键字来说明该表就是事务性的临时表,而不是会话性质的临时表。(注意:DDL会自动隐式提交事务,所以在procedure中用到临时表需稍加注意)
(2) 事务临时表数据的变化分析。
事务临时表的话,当事务结束的时候,就会清空这个事务临时表。所以,当我们在数据库临时表中插入数据后,只要事务没有提交的话,该表中的数据就会存在。但是,当事务提交以后,该表中的数据就会被删除。而且,这个变化不会在重做日志中显示。
具体事务临时表与会话临时表有什么区别,我们在介绍完会话临时表后会详细介绍。
2、 会话临时表的管理。
会话临时表,顾名思义,是指数据只在当前会话内有效的临时表。关闭当前会话或者进行新的连接之后,数据表中的内容就会被清除。那会话临时表跟事务临时表到底有什么区别呢?我们以一个实例来看其中的区别。
(1) 首先,创建一个会话临时表。
CREATE GLOBAL TEMPOPARY TABLE TEMP_USER
(ID NUMBER(12) Primary key,name varchar2(10))
ON COMMIT PRESERVE ROWS;
也就是说,会话临时表跟事务临时表的创建语法大致相同,只有最后的关键字有区别。不过两个表虽然类似,但是其内部的处理机制还是有比较大的区别。
(2) 往该表中插入数据。
Insert into TEMP_USER values(1001,’victor’);
往数据库临时表中插入数据的方法,跟往普通表中插入数据的方法是一样的,都利用insert into语句进行操作。该临时表的数据在会话结束之前都是存在这个表格中的。
(3) 提交该事务并查询相关记录。
我们利用COMMIT的语句把该事务提交以后,再用SELECT查询语句进行查询。我们知道,若该表是事务临时表的话,则当该事务结束以后,该表中的内容就会被删除。但是,这是会话临时表,所以即使该事务提交了,但是,利用SELECT语句进行查询时,仍然可以查到该条员工记录。
(4) 结束当前会话,并重新连接数据库。
关闭当前会话,从新连接到数据库后,再利用SELECT语句查询时,会有什么结果呢?此时,就查不到我们刚才插入的数据。这也就是说,在关闭对话的时候,数据库系统已经把原有的数据删除了。从以上的分析我们可以看中,会话临时表与事务临时表主要的差异就在于删除数据时机的不同。事务性临时表是在事务提交的时候清除数据,而会话性临时表则是在关闭当前会话的时候清除临时表。只要当前会话没有关闭,即使事务完成了,会话临时表中的数据仍然存在,不会被清除。
- Oracle的数据库的两种临时表
- Oracle两种临时表的创建
- Oracle两种临时表的创建与使用详解
- Oracle两种临时表的创建与使用详解
- Oracle两种临时表的创建与使用详解
- Oracle两种临时表的创建与使用详解
- oracle两种临时表的创建及使用方法
- oracle清理数据库的临时表空间
- Oracle数据库临时表-----会话级的临时表和事务级的临时表
- 【oracle】Oracle两种临时表的创建与使用详解
- sql两种临时表的创建
- 数据库的临时表:临时表在Oracle数据库与SQL Server数据库中的异同
- ORACLE的临时表
- oracle的临时表
- ORACLE的临时表
- ORACLE的临时表
- 【转】Oracle两种临时表的创建与使用详解
- 在Oracle数据库中的临时表的用法汇总
- TDI Filter 过滤驱动
- 在Yslow 34 Rules之后 -- 网站性能优化思路和进展
- 使用statsvn统计svn中的代码量
- The first 31 signals in Linux/i386
- 神奇的贝叶斯---垃圾邮件过滤
- Oracle的数据库的两种临时表
- DIV+CSS解决IE6,IE7,IE8,FF兼容问题
- python 收email实例 ,只返回第一封邮件的信息
- iOS iPhone 5s/6/6Plus 屏幕尺寸
- RMAN-06059: expected archived log not found
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
- hdu 2795 Billboard
- 改良程序的11技巧(我觉的是篇好文章收藏下)
- Linux服务器上监控网络带宽的18个常用命令