首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载  ┆ 端午节祝福 
设为首页
加入收藏
联系我们
热门关键字: .net应用  操作系统  Dreamweaver  WinRAR  网络推广
高级搜索
您当前的位置: 主页>数据库>ORACLE>Oracle数据库临时表的管理及其注意事项
Oracle数据库临时表的管理及其注意事项
来源: 发布时间:2008-06-23 发布人: 浏览: 人次   字体: [ ]  

Oracle数据库中有一种类型的表,叫做临时表。这个临时表跟永久表最大的区别就是表中的数据不会永远的存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除。

  1、 事务临时表的管理。

  (1) 事务临时表的创建。

  Oracle数据库根据临时表的性质不同,可以分为事务临时表与会话临时表。事务临时表是指数据只有在当前事务内有效。一般情况下,如果在创建数据表的时候,没有特殊指明这表是会话临时表的话,则该表默认为事务临时表。

  我们可以以下面的语句创建事务临时表。

  Create global temporary table Temp_user
  (ID NUMBER(12) Primary key,name varchar2(10));

  笔者建议:

  这个创建临时表的语句中,虽然没有显性的指明该表是事务临时表,但是,默认的情况下,若没有指明是什么临时表的话,系统默认是事务临时表。我们要创建事务临时表时,可以不指定关键字。但是,这查看起来比较麻烦。我建议,无论在建立什么临时表,都要利用具体的关键字来显形的指明,这大家看起来都方便。一般可以利用ON COMMIT DELETE ROWS关键字来说明该表就是事务性的临时表,而不是会话性质的临时表。

  (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语句查询时,会有什么结果呢?此时,就查不到我们刚才插入的数据。这也就是说,在关闭对话的时候,数据库系统已经把原有的数据删除了。从以上的分析我们可以看中,会话临时表与事务临时表主要的差异就在于删除数据时机的不同。事务性临时表是在事务提交的时候清除数据,而会话性临时表则是在关闭当前会话的时候清除临时表。只要当前会话没有关闭,即使事务完成了,会话临时表中的数据仍然存在,不会被清除。

  3、 临时表管理需要注意的地方。

  临时表相对与其他表来说,是一种比较特殊的表结构,但是,作用又比较大,Oracle数据库若没有这种表的话,还真是不行。为了管理好这种特殊的表,我们需要注意几个细节。

  一是要注意临时表不能永久的保存数据。只所以称为临时表,就是因为该表中的内容只是临时存在的。当一个会话或者事务结束时,该表中的内容就会被自动清空。所以,在临时表中,一般不要保存永久数据。在实务中,有个不好的操作习惯,就是有些人在测试数据库的时候,喜欢把测试的数据放在临时数据表中。其实,这是对Oralce临时数据表认识的错误。若我们在数据库中,把要测试的数据,如销售定单的内容放在数据库的临时表中的话,则在其他功能中,如要测试销售定单日报表的功能时,就会找不到相关的定单内容。因为离开特定的会话或者事务的话,临时表中的内容就会不存在了。所以,Oralce数据库中所讲的临时表不是给我们来存储测试数据的。


共2页: 上一页 1 [2] 下一页
↓下一篇:没有了
相 关 文 章   发布商链接
·解析Oracle中限制返回结果集的大小
·用Oracle 10g列值掩码技术隐藏敏感数...
·Oracle巧取指定记录以及巧用外关联...
·ORACLE使用中的常见、实用的问题技巧
·oracle数据库导入Excel数据方法
·导入、导出oracle数据库与复制表、清...
·Oracle内连接、外连接、右外连接、全...
·几个方面入手oracle性能优化方案
·Oracle sql性能优化调整规则汇总
·如何彻底删除安装Oracle留下的东西
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·Oracle中to_date函数的详细使
·Oracle导致CPU进程100%原因及
·实例讲解对oracle进行简单树...
·Oracle服务费是如何计算的,以...
·如何完全清除Oracle
·ORACLE 10G分区表维护:全局...
·怎样有效提高Oracle 10G增量...
·Oracle数据库的四种启动方式...
·利用函数实现oracle行列转换
·使用type类型和存储过程来完...
·oracle9i客户端如何连接oracl...
·解决ORACLE被锁定的资源两法
·oracle中分割字符串,并求最...
·详细讲解Oracle数据库灾难防...
·oracle分析函数row_number的...
热 门 文 章
·Oracle内连接、外连接、右外...
·ORACLE使用中的常见、实用的...
·导入、导出oracle数据库与复...
·oracle9i客户端如何连接oracl...
·oracle分析函数row_number的...
·利用函数实现oracle行列转换
·oracle中分割字符串,并求最...
·几个方面入手oracle性能优化...
·使用type类型和存储过程来完...
·Oracle巧取指定记录以及巧用...
·Oracle sql性能优化调整规则...
·oracle数据库导入Excel数据方...
·ORACLE 10G分区表维护:全局...
·实例讲解对oracle进行简单树...
·如何彻底删除安装Oracle留下...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .