转贴:http://lanyan-lan.iteye.com/blog/867885
临时表的特点:
1. 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的临时表,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性;
2. 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。ORACLE根据你创建临时表时指定的参数(On Commit Delete Rows / On Commit Preserve Rows),自动将数据TRUNCATE掉。
临时表的不足:
1. 不支持lob对象,这也许是设计者基于运行效率的考虑,但实际应用中确实,要此功能时就无法使用临时表了。
2. 不支持主外键关系。
临时表用于何处
在对多表做关联查询时,其中每张表的数据量都比较大,而多表关联后,所得到的结果集确是相当的小且查询的结果的速度比较快,那么这时可以考虑用临时表。
临时表分两种类型的临时表:
1. 会话级临时表
2. 事物级临时表
临时表:顾明思义,存在该表的数据是临时的。
会话临时表:该临时表肯定与会话有关。会话在不退出时,则些临时表中的数据存在,会话退出,该临时表中的数据也会随之消失。在多用户操作的情况下,一个会话从来不阻塞另一个会话使用临时表。即使锁定临时表,一个会话也不会阻塞其他会话使用临时表。其语法为:
Create global temporary table table_name
(col1 type1, col2 type2 …)
On commit preserve rows;
示例:
Create global temporary table temp_emp
(empno number(8),
Ename varchar2(30),
Sal number(8,2)
)
On commit preserve rows;
事物临时表:指该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致(包括退出SESSION的时候,事务级的临时表也会被自动截断)。语法为:
Create global temporary table table_name
(col1 type1, col2 type2 …)
On commit delete rows;
示例:
Create global temporary table temp_dept
(d_no number(4),
D_name varchar2(30),
D_num number(8)
)
On commit delete rows;
会话临时表和事物临时表的区别:
在语法上,会话临时表采用on commit preserve rows,而事物临时表采用on commit delete rows;在用途上,会话级临时表只会在会话结束时,临时表中的数据才会被截断。而事物临时表则不管是在事物提交(commit)、事物回滚(rollback)或会话结束,临时表中的数据都会被截断。
分享到:
相关推荐
"Oracle 临时表(事务级、会话级)" Oracle 临时表是 Oracle 数据库中的一种特殊类型的表,它可以保存一个会话或事务中的数据。当会话或事务结束时,临时表中的数据自动清空,但是临时表的结构和元数据还存储在...
Oracle临时表是一种特殊的表,用于存储临时数据,通常用于事务处理或特定会话期间的数据处理。根据数据保留方式的不同,Oracle临时表可以分为两大类: 1. **会话级临时表**:这类临时表中的数据仅在当前会话期间...
Oracle中的临时表是一种特殊的数据结构,用于存储会话或事务期间的数据,这些数据仅对当前会话可见,并在特定条件下自动清除。Oracle提供两种类型的临时表:事务型和会话型。 事务型临时表在事务开始时创建,插入的...
Oracle 中的临时表有两种:事务级别的临时表和会话级的临时表。事务级别的临时表在事务结束时自动清空记录,而会话级的临时表在会话结束时自动清空。 临时表的特点 临时表有以下特点: * 临时表可以在多用户并发...
根据数据的生命周期,Oracle临时表可以分为两大类:事务临时表和会话临时表。 ##### 1. 事务临时表 - **定义**:事务临时表中的数据仅在当前事务的生命周期内有效。一旦事务结束(通过提交或回滚),表中的所有...
本篇文章将深入探讨如何在Oracle存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...
**二、Oracle临时表** 临时表在Oracle中用于在单个会话中存储临时数据,这些数据只对创建它们的会话可见,会话结束时,临时表及其数据都会被自动删除。 1. **创建临时表**:使用`CREATE GLOBAL TEMPORARY TABLE`...
Oracle数据库中的临时表是一种特殊的表类型,主要用于存储在特定会话或事务期间产生的临时数据。与常规的永久表相比,临时表的数据不会永久保存,而是会在会话结束或事务完成时自动清除,无需用户手动删除。 1. **...
Oracle临时表是数据库管理系统中的一种特殊表,它主要用于在会话期间存储临时数据,供当前会话使用。这种表在会话结束时会被自动删除,不会永久保存在数据库中,因此,它们对于处理大量中间结果或者进行复杂计算的...
Oracle Temporary Tables,也称为Oracle临时表,是Oracle数据库系统中用于存储临时数据的特殊类型表。它们主要用于处理会话级别的数据,这些数据在特定会话或事务结束后会被自动清理,从而减少了对永久表的负担和...
在 Oracle 中,临时表用来保存事务或会话期间的中间结果。在临时表中保存的数据只有对当前会话是可见的,任何会话都不能看到其他会话的数据,即使在当前会话 COMMIT 数据以后也是不可见的。多用户并行不是问题,一个...
#### 二、Oracle临时表概述 临时表是Oracle提供的一种特殊类型的表,用于存储临时数据。它们通常用于执行复杂的计算任务或暂存中间结果,以减少对主表的访问次数,从而提升整体性能。根据生命周期的不同,临时表...
Oracle Temporary Tables,也称为Oracle临时表,是在Oracle数据库中用于临时存储数据的特殊表。它们主要用在处理大型数据集时提高性能,特别是在复杂的查询和存储过程中。临时表的生命周期和可见性根据创建时指定的...
本篇文章将深入探讨Oracle临时表的使用,并通过一个使用游标(CURSOR)返回结果集的例子来进一步理解其用法。 首先,让我们了解如何创建Oracle临时表。临时表的创建语法与普通表类似,但我们需要使用`GLOBAL ...
在Oracle数据库中,临时表是一种特殊类型的表,它主要用于存储那些仅对当前会话或事务有意义的数据。与普通表不同的是,临时表的数据不会持久化存储,而是根据特定条件进行管理。这使得临时表非常适合用于中间结果的...
在创建临时表时,可以使用 ON COMMIT DELETE ROWS 关键字来说明该表是事务性的临时表,而不是会话性质的临时表。例如: ```sql Create global temporary table Temp_user (ID NUMBER(12) Primary key, name varchar...
Oracle的临时表分为两类:会话级临时表和事务级临时表。会话级临时表的数据在整个会话期间有效,直到用户退出会话;而事务级临时表的数据仅在事务期间存在,事务结束后数据即被清除。临时表的一个关键特性是其数据的...
Oracle数据库系统支持创建临时表(Temporary Tables),这些表主要用于存储会话私有的、仅在特定事务或会话期间存在的数据。临时表的概念为用户提供了在处理大量临时数据时的高效和安全的方式,尤其是在进行复杂计算...
Oracle临时表是一种特殊类型的表,它们主要用于存储临时数据,这些数据通常在一次会话(session)中创建并在该会话结束时自动删除。与常规表不同的是,临时表中的数据对于不同的会话而言是隔离的,即一个会话中对临时...
Oracle中的临时表是一种特殊的数据表,用于存储在特定会话或事务期间产生的临时数据。它们在数据库中存在,但其生命周期受到严格的限制,以确保数据的隔离性和安全性。临时表主要分为两类:事务级别的临时表和会话...