2009/12/31

Oracle DB 中, 建立 Temporary Table

在 Oracle Database 中,

可以建立暫存, 臨時性, 且快速存取的 Table : Temporary Table.

 語法
Create Global Temporary Table <Table_Name> (
<Col_Name1> <Data_Type1>
, <Col_Name2> <Data_Type2>
, ...
) on Commit [Delete / Preserve] Rows;

-- 其中,預設值為 on Commit Delete Rows.

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

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

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

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

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