程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle兩種臨時表的創建與使用詳解

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

編輯: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.創建事務級臨時表,插入一條數據,並查詢:

 

create global temporary table transaction_temp_tb (col1 varchar(20)) on commit delete rows;
insert into  transaction_temp_tb values('test');
select * from  transaction_temp_tb;
\

 

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

\

3.創建一個會話級臨時表,插入一條數據,並查詢:

 

create global temporary table session_temp_tb (col1 varchar(20)) on commit preserve rows;
insert into session_temp_tb values('test');
select * from session_temp_tb;

\

 

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

\

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

\

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved