Oracle 暫存資料表

來源:互聯網
上載者:User

一、基於會話的暫存資料表

--建立基於會話的暫存資料表要記得關鍵字global temporary,及on commit preserve rows(基於會話)

CREATE GLOBAL TEMPORARY TABLE TEMP_SESSION(COL1 TYPE1) ON COMMIT PRESERVE ROWS;


SQL> create global temporary table ljb_tmp_session on commit preserve rows as select * from dba_objects where 1=2;

Table created


--通過以下可看出當前表的屬性為全域暫存資料表,類型為基於會話


SQL> select table_name,temporary,duration from user_tables where table_name='LJB_TMP_SESSION';

TABLE_NAME TEMPORARY DURATION

------------------------------ --------- ----------------------------------------------------

LJB_TMP_SESSION Y SYS$SESSION


二、基於事物的暫存資料表

--建立基於會話的暫存資料表要記得關鍵字global temporary,及on commit delete rows(基於事務)

CREATE GLOBAL TEMPORARY TABLE Table_TRANSACTION(COL1 TYPE1) ON COMMIT DELETE ROWS;


SQL> create global temporary table ljb_tmp_transaction on commit delete rows as select * from dba_objects where 1=2;

Table created


--通過以下可看出當前表的屬性為全域暫存資料表,類型為基於事務


SQL> select table_name, temporary, DURATION from user_tables where table_name='LJB_TMP_TRANSACTION';

TABLE_NAME TEMPORARY DURATION

------------------------------ --------- --------------------------------------------------------

LJB_TMP_TRANSACTION Y SYS$TRANSACTION



無論是基於事務還是基於會話的暫存資料表,對於其他SESSION都是不可見的,換句話說資料只存在於當前SESSION中。基於事務的暫存資料表,在本SESSION中有任何提交動作,資料也就立即消失了,基於會話的暫存資料表在SESSION生存期內提交資料仍然存在,並且可以復原,沒脫離SESSION和普通表的操作沒有什麼區別。


三、區別:

1、會話級暫存資料表:暫存資料表的資料和當前會話有關,當你的SESSION不退出時,暫存資料表的資料就存在,退出或斷開session時資料別截斷。當你以另一SESSION登陸時,不能看到其他SESSION暫存資料表的資料。建立方法

CREATE GLOBAL TEMPORARY TABLE TEMP_SESSION(COL1 TYPE1) ON COMMIT PRESERVE ROWS;

2、事物級暫存資料表:暫存資料表與事物有關,當事物進行提交或復原時,暫存資料表資料自動截斷。其他和會話級暫存資料表一直,包括退出SESSION時截斷表。

CREATE GLOBAL TEMPORARY TABLE Table_TRANSACTION(COL1 TYPE1) ON COMMIT DELETE ROWS;

3、兩種類型暫存資料表的區別:會話級暫存資料表採用on commit preserve rows;而事務級則採用on commit delete rows;用法上,會話層級只有當會話結束暫存資料表中的資料才會被截斷,而且事務級暫存資料表則不管是commit、rollback或者是會話結束,暫存資料表中的資料都將被截斷。


總結可以這樣認為:如果應用很簡單,不要對暫存資料表做多次組合處理,比如合并,刪除等多次操作,就採用基於事物的,更簡單!如果有涉及到對暫存資料表要做組合操作的,就必須選擇基於會話的暫存資料表,選錯了就會在組合操作中資料丟失,出大問題了!

本文出自 “無雙城” 部落格,謝絕轉載!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.