`

oracle 临时表 基于事务 会话

 
阅读更多

转贴: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临时表(事务级、会话级).docx

    oracle临时表(事务级、会话级).docx

    Oracle 临时表用法

    很好的,经典.创建Oracle 临时表,可以有两种类型的临时表:会话级的临时表,事务级的临时表 。

    Oracle存储过程中使用临时表

    Oracle存储过程中使用临时表 会话级临时表 事务级临时表

    oracle临时表操作学习资料

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

    SpringBoot 整合Mybatis 创建临时表

    SpringBoot 整合Mybatis 创建临时表

    对比Oracle临时表和SQL Server临时表的不同点

    Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解...Oracle临时表分为会话级临时表和事务级临时表。 会话级临时表是指临时表中的

    oracle 临时表详解及实例

    在Oracle8i或以上版本中,可以创建以下两种临时表: 1。会话特有的临时表 CREATE GLOBAL TEMPORARY <TABLE> ( <column> ) ON COMMIT PRESERVE ROWS;  2。事务特有的临时表 CREATE GLOBAL TEMPORARY <TABLE> ( ...

    21天学通Oracle

    5.6.2 会话级临时表 84 5.6.3 事务级临时表 85 5.6.4 查看临时表在数据库中的信息 86 5.6.5 临时表的应用场景 86 5.7 特殊的表dual 87 5.7.1 分析dual表 87 5.7.2 dual表的应用场景 87 5.7.3 修改dual表对...

    pgtt:PostgreSQL扩展,用于创建,管理和使用Oracle风格的全局临时表以及其他RDBMS

    PostgreSQL全局临时表 ... PostgreSQL本机临时表在会话结束时或当前事务结束时自动删除。 全局临时表(GTT)是永久性的,它们被创建为对所有用户可见的常规表,但它们的内容是相对于当前会话或事务的。 即使该表是持久

    ORACLE的五种表的优缺点概述

    一、普通表(heap table):适合大部分设计场景,有优点也有缺点。 优点: 1.语法简单方便 2.适合大部分场景 缺点: ...一个是基于会话的全局临时表(on commit preserve rows),一个是基于事务的全局临时

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

     6.2.3 为用户设置表空间配额和临时表空间  6.3 创建表空间  6.3.1 创建(永久)表空间  6.3.2 创建大文件表空间  6.3.3 创建临时表空间  6.4 修改表空间  6.4.1 扩展表空间  6.4.2 修改属性、状态 ...

    ORACLE9i_优化设计与系统调整

    §9.4.4 临时表空间设计规划 100 §9.4.5 数据文件和日志文件在不同磁盘上 101 §9.5 数据库物理设计 101 §9.5.1 定量估计 101 §9.5.2 表空间与数据文件 102 §9.5.3 物理设计原则 103 §9.5.4 数据库物理设计内容...

    Oracle最常用的语句

     temporary tablespace temp --临时表空间为temp  profile default --受profile文件的限制  quota unlimited on 表空间名; --在表空间下面建表不受限制 4.创建角色  create role 角色名 identified by 密码; 5....

    Oracle8i_9i数据库基础

    §3.1.3 建立临时表结构 97 §3.3 修改表结构 98 §3.3.1 修改表结构命令 98 §3.3.2 修改表结构例子 99 §3.3.3 删除表结构 101 §3.3.4 使用CHECK作限制约束 101 §3.3.5 使用UNRECOVERABLE创建表 102 §3.3.6 将...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    9.5.7 临时表和redo/undo 317 9.6 分析undo 321 9.6.1 什么操作会生成最多和最少的undo? 321 9.6.2 ORA-01555: snapshot too old错误 323 9.7 小结 334 第10章 数据库表 335 10.1 表类型 335 10.2 术语 337 ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    7.4 创建和使用临时表 225 7.5 索引 227 7.5.1 为什么说索引是必需的 227 7.5.2 索引类型 228 7.5.3 创建和使用索引 232 7.5.4 修改和删除索引 233 7.6 约束 234 7.6.1 约束类型 234 7.6.2 定义约束 236 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

Global site tag (gtag.js) - Google Analytics