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或者是會話結束,暫存資料表中的資料都將被截斷。


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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.