[ORACLE] Create Temporary table 比較!

  • 9951
  • 0

摘要:[ORACLE] Create Temporary table 比較!

temporary tables 可用來儲存在 session 或 transaction 期間 session 私有資料

在 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, transaction 結束資料立即消失

--預設值為 on Commit Preserve Rows, session 結束資料立即消失

 

 

 比較 on Commit Delete Rows 與 on Commit Preserver Rows
Delete :
1) Commit 後, 資料被刪除.
2) 不管有無 Commit, 都可以直接 Drop Table.
 
Preserve :
1) Commit 後, 資料仍保留著.
2) 不管有無 Commit, 若要 Drop Table 前, 一定要先 Truncate Table 才可以.

 

 

 

Temporary Table 優缺點
優點 : 
1) 存放在記憶體中, 而非 Data File, 所以 "存取較快".
2) SESSION 獨立, 也就是 "不同的 DB Session, 看不到另一個 DB Session 的資料".
3) Commit 後, 可以決定資料是否保留.
 
缺點 : 
1) 不能使用 "%type", "%rowtype".
2) 在程式開發階段, 不易查找 Temporary Table 資料.

 

原文參考來源: http://tomkuo139.blogspot.tw/2009/12/oracle-db-temporary-table.html

 






Y2J's Life:http://kimenyeh.blogspot.tw/