1. 程式人生 > >Oracle兩種臨時表的建立與使用詳解

Oracle兩種臨時表的建立與使用詳解

ORACLE資料庫除了可以儲存永久表外,還可以建立臨時表temporary tables。這些臨時表用來儲存一個會話SESSION的資料,或者儲存在一個事務中需要的資料。當會話退出或者使用者提交commit和回滾rollback事務的時候,臨時表的資料自動清空,但是臨時表的結構以及元資料還儲存在使用者的資料字典中。

  分類:
  1.會話級臨時表

  會話級臨時表是指臨時表中的資料只在會話生命週期之中存在,當用戶退出會話結束的時候,Oracle自動清除臨時表中資料。

  格式:

  Create Global Temporary Table Table_Name  
  (
   Col1 Type1,

   Col2 Type2
   ...
  ) 
  On Commit Preserve Rows;
  2.事務級臨時表
  事務級臨時表是指臨時表中的資料只在事務生命週期中存在。
  Create Global Temporary Table Table_Name  
  (
    Col1 Type1,
    Col2 Type2
    ...
  ) 
  On Commit Delete Rows; 

  當一個事務結束(commit or rollback),Oracle自動清除臨時表中資料。

  下面在Oracle 10g中演示了臨時表的建立與使用:

1.建立事務級臨時表,插入一條資料,並查詢:

  1. createglobaltemporarytable transaction_temp_tb (col1 varchar(20)) oncommitdeleterows;  
  2. insertinto  transaction_temp_tb values('test');  
  3. select * from  transaction_temp_tb;  

2.執行commit或者rollback操作,臨時表內資料就被清空,但表結構依然存在:

3.建立一個會話級臨時表,插入一條資料,並查詢:

  1. createglobaltemporarytable session_temp_tb (col1 
    varchar(20)) oncommit preserve rows;  
  2. insertinto session_temp_tb values('test');  
  3. select * from session_temp_tb;  


4..執行commit或者rollback操作,表內資料依然存在,新建一個命令視窗(相當於開啟了一個新的會話),表內的資料就查詢不到了:


5.如果建立會話臨時表的會話沒有結束,則無法刪除此臨時表,因為臨時表,還在使用之中,但是結束會話(關閉建立會話級臨時表的命令視窗)後就可以刪除了:


相關推薦

Oracle臨時建立使用

ORACLE資料庫除了可以儲存永久表外,還可以建立臨時表temporary tables。這些臨時表用來儲存一個會話SESSION的資料,或者儲存在一個事務中需要的資料。當會話退出或者使用者提交commit和回滾rollback事務的時候,臨時表的資料自動清空,但是臨

oracleOracle臨時建立使用

ORACLE資料庫除了可以儲存永久表外,還可以建立臨時表temporary tables。這些臨時表用來儲存一個會話SESSION的資料,或者儲存在一個事務中需要的資料。當會話退出或者使用者提交commit和回滾rollback事務的時候,臨時表的資料自動清空,但是臨時表的

oracle臨時的用法

1、前言 目前所有使用Oracle作為資料庫支撐平臺的應用,大部分資料量比較龐大的系統,即表的資料量一般情況下都是在百萬級以上的資料量。 當然在Oracle中建立分割槽是一種不錯的選擇,但是當你發現你的應用有多張表關聯的時候,並且這些表大部分都是比較龐大,而你關聯的時候發現其中的某一張或者某

MySQL中的臨時

http://mysql.taobao.org/monthly/2016/06/07/ 外部臨時表 通過CREATE TEMPORARY TABLE 建立的臨時表,這種臨時表稱為外部臨時表。這種臨時表只對當前使用者可見,當前會話結束的時候,該臨時表會自動關閉。這種臨時

With tempTabel as (select...)臨時的用法

最近優化sql,發現這個臨時表真是個好東西。分享出來 (1)with基礎 使用WITH AS 語句可以為一個子查詢語句塊定義一個名稱,使用這個子查詢名稱可以在查詢語句的很多地方引用這個子查詢。Oracle 資料庫像對待內聯檢視或臨時表一樣對待被引用的子查

SELECT INTO 和 INSERT INTO SELECT 複製語句(SQL資料庫和Oracle資料庫的區別)

https://www.cnblogs.com/mq0036/p/4155136.html 我們經常會遇到需要表複製的情況,如將一個table1的資料的部分欄位複製到table2中,或者將整個table1複製到table2中,這時候我們就要使用SELECT INTO 和 INSER

SELECT INTO 和 INSERT INTO SELECT 複製語句

1.INSERT INTO SELECT語句 語句形式為:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 或者:Insert into Table2 select  *  from T

Oracle create tablespace 創建空間語法

系統回滾段 語法 判斷 臨時 extent 數值 off offline 文件的 CREATE [UNDO] TABLESPACE tablespace_name [DATAFILE datefile_spec1 [,datefile_spec2] ..

Oracle已有數據建立分區—在線重定義

空間 plus name undo 之前 自動 原因 holding pl/sql 今天在做數據抽取的時候,發現有一張業務表數據量達到了5000W,所以就想將此表改為分區表。分區表的有點如下: 1、改善查詢性能:對分區對象的查詢可以僅搜索自己關心的分區,提高檢索速度

MyBatis無限級分類實現的方法--自關聯map集合

except app exce utf-8 elf findall ldr ati tex 1、這回先創建數據庫吧 下表cid是CategoryId的縮寫,cname是CategoryName的縮寫,pid是parentId的縮寫 無限級分類一般都包含這三個屬性,至少也要包

oracle 11g解決臨時空間過大的問題

temp tablespace有的數據庫在使用過程中由於某些操作會導至臨時表空間過大,由於臨時表空間的工作機制,在作業完成後該部分臨時表空間也不會釋放。通過重建臨時表空間的方法可以解決這個問題,但操作還是有點繁瑣。在操作中發現,通過resize tempfile可以釋放臨時表空間,如果有多個tempfile,

Tomcat 9.0 7 的開機啟動方式web頁面管理

Tomcat 9.0 7 開機啟動方式 Tomcat WEB管理 tomcat開機啟動 項目環境 系統平臺: CentOS Linux release 7.4.1708 (Core) 內核 3.10.0-693.el7.x86_64 最小化安裝 配置jdk環境 去oracle官網

[Vue]實例化Vue時的掛載方式el$mount

class message size obj new () ESS div clas Vue 的$mount()為手動掛載,在項目中可用於延時掛載(例如在掛載之前要進行一些其他操作、判斷等),之後要手動掛載上。new Vue時,el和$mount並沒有本質上的不同。 1

mybatis oracle方式批量插入資料

<insert id="addBatch" parameterType="java.util.List">       BEGIN      &

分享知識-快樂自己:oracle分區

優缺點 dba 命令 2-0 方式 超過 src 索引 完全 從以下幾個方面來整理關於分區表的概念及操作: 1)表空間及分區表的概念: 2)表分區的具體作用: 3)表分區的優缺點: 4)表分區的幾種類型及操作方法: 5)對表分區的維護性操作: 1):表空間及分區表的概念 表

磁碟管理2(磁碟配額、磁碟加密、磁碟的型別:mbrgpt)

1.磁碟配額 磁碟配額:針對於裝置 dd命令: dd if=/dev/zero of=/mnt/studentfile bs=1M count=21 具體引數的含義: dd #擷取 if

iOS·NSObject的含義:類協議

1. 區分:類的NSObject與協議的NSObject iOS開發中,蘋果提供的一些系統類都屬於NSObject的子類,例如UIColor類的定義如下所示。 UIColor 或者自定義的類,也繼承自NSObject,例如下圖所示。 自定義類的父類 但是,NSObj

Spark-Streaming獲取kafka資料的方式:ReceiverDirect的方

 簡單理解為:Receiver方式是通過zookeeper來連線kafka佇列,Direct方式是直接連線到kafka的節點上獲取資料 回到頂部 使用Kafka的高層次Consumer API來實現。receiver從Kafka中獲取的資料都儲存在Spark Exec

資料結構篇:鄰接建立顯示

每一個頂點後面就是一條連結串列,每個頂點都存在數組裡。 以這張圖為例 結構如下 執行截圖 結構體定義 //邊表結點 typedef struct EdgeNode { //頂點對應的下標 int adjvex; //指向下一個鄰接

Skip List(跳躍)原理實現

#include<stdio.h>  #include<stdlib.h>      #define MAX_LEVEL 10 //最大層數      //節點  typedef  struct nodeStructure  {      int key;      int value