2016年8月26日 星期五

Oracle DB 中, 建立 Temporary Table

在 Oracle Database 中,可以建立暫存、臨時性、且快速存取的 Table : Temporary Table。

A. 語法如下:
Create Global Temporary Table <Table_Name> (
  <Col_Name1>  <Data_Type1>,
  <Col_Name2>  <Data_Type2>,
  ...
) on Commit [Delete / Preserve] Rows;
-- 其中,預設值為 on Commit Delete Rows.

B. 比較 on Commit Delete Rows 與 on Commit Preserver Rows:
Delete:
1) Commit 後,資料被刪除。
2) 不管有無 Commit,都可以直接 Drop Table。

Preserve:
1) Commit 後,資料仍保留著。
2) 不管有無 Commit,若要 Drop Table 前,一定要先 Truncate Table 才可以。

C. 檢查有哪些 Temp Table?
select table_name
  from all_tables
 where temporary = 'Y';

D. Temporary Table 優缺點:
優點:
1) 存放在記憶體中,而非 Data File,所以 "存取較快"。
2) SESSION 獨立,也就是 "不同的 DB Session, 看不到另一個 DB Session 的資料"。
3) Commit 後,可以決定資料是否保留。

缺點:
1) 不能使用 "%type","%rowtype"。
2) 在程式開發階段,不易查找 Temporary Table 資料。

沒有留言:

張貼留言