全域性臨時表使用的情景

2021-10-06 14:06:16 字數 835 閱讀 3633

全域性臨時表有兩種模式:

一種是基於會話級別的,會話與會話之間的資料是隔離的,當會話段掉,資料就會清空;一種是基於事務級別的,當執行commit或者rollback 資料將清除,全域性臨時表使用的是臨時表空間的位置。臨時表即使當前會話已經提交了(commit)資料,別的會話也看不到它的資料。對於臨時表,不存在多使用者併發的問題,因為乙個會話不會因為使用乙個臨時表而阻塞另乙個會話。即使我們「鎖住」了臨時表,也不會妨礙其他會話使用臨時表。

建立基於session的全域性臨時表(退出session該錶記錄就會自動清空)

create global temporary table

表名欄位名 型別 是否為空,

欄位名 型別 是否為空

on commit preserve rows;

建立基於事務的全域性臨時表(commit提交後,不等退出session,在該錶記錄就會自動清空)

create global temporary table

表名欄位名 型別 是否為空,

欄位名 型別 是否為空

on commit delete rows。

目前所有使用oracle作為資料庫支撐平台的應用,大部分是資料量比較龐大的系統,即表的資料量級一般情況下都是在百萬級以上。當然,在oracle中建立分割槽是一種不錯的選擇,但是當發現應用有多張表關聯的時候,並且這些表大部分都比較龐大,而關聯的時候發現其中的某一張或者某幾張表關聯之後得到的結果集非常小,並且查詢得到這個結果集的速度非常快,那麼這個時候考慮在oracle中建立「臨時表」.

全域性臨時表的應用

在我們開發商務軟體的時候,常常會遇到這樣的乙個問題 怎樣防止使用者重複登入我們的系統?特別是對於銀行或是財務部門,更是要限制使用者以其工號身份多次登入。可能會有人說在使用者資訊表中加一欄位判斷使用者工號登入的狀態,登入後寫1,退出時寫0,且登入時判斷其標誌位是否為1,如是則不讓該使用者工號登入。但是...

區域性臨時表與全域性臨時表區別與示例

區域性臨時表與全域性臨時表區別與示例 1 區域性臨時表 開頭 只對當前連線有效,當前連線斷開時自動刪除。2 全域性臨時表 開頭 對其它連線也有效,在當前連線和其他訪問過它的連線都斷開時自動刪除。3 不管區域性臨時表還是全域性臨時表,只要連線有訪問許可權,都可以用drop table tmp 或者dr...

臨時表使用

臨時表語法 會話型的,會話結束資料清空 create global temporary table test tmp id number,name varchar2 10 on commit preserve rows 事務型的,事務結束資料清空 create global temporary ta...