<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    [摘錄]Temporary Tables臨時表


    摘錄地址:

    Temporary Tables臨時表
    1簡介
       ORACLE數(shù)據(jù)庫除了可以保存永久表外,還可以建立臨時表temporary tables。這些臨時表用來保存一個會話SESSION的數(shù)據(jù),或者保存在一個事務中需要的數(shù)據(jù)。當會話退出或者用戶提交commit和回滾rollback事務的時候,臨時表的數(shù)據(jù)自動清空,但是臨時表的結構以及元數(shù)據(jù)還存儲在用戶的數(shù)據(jù)字典中。
       臨時表只在oracle8i以及以上產(chǎn)品中支持。
    2詳細介紹
       Oracle臨時表分為 會話級臨時表 和 事務級臨時表。
    會話級臨時表是指臨時表中的數(shù)據(jù)只在會話生命周期之中存在,當用戶退出會話結束的時候,Oracle自動清除臨時表中數(shù)據(jù)。
    事務級臨時表是指臨時表中的數(shù)據(jù)只在事務生命周期中存在。當一個事務結束(commit or rollback),Oracle自動清除臨時表中數(shù)據(jù)。
    臨時表中的數(shù)據(jù)只對當前Session有效,每個Session都有自己的臨時數(shù)據(jù),并且不能訪問其它Session的臨時表中的數(shù)據(jù)。因此,臨時表不需要DML鎖。
       當一個會話結束(用戶正常退出 用戶不正常退出 ORACLE實例崩潰)或者一個事務結束的時候,Oracle對這個會話的表執(zhí)行 TRUNCATE 語句清空臨時表數(shù)據(jù).但不會清空其它會話臨時表中的數(shù)據(jù).
    你可以索引臨時表和在臨時表基礎上建立視圖.同樣,建立在臨時表上的索引也是臨時的,也是只對當前會話或者事務有效.   臨時表可以擁有觸發(fā)器.
    3建立臨時表
       臨時表的定義對所有會話SESSION都是可見的,但是表中的數(shù)據(jù)只對當前的會話或者事務有效.
       建立方法:
    1) ON COMMIT DELETE ROWS 定義了建立事務級臨時表的方法.
    CREATE GLOBAL TEMPORARY TABLE admin_work_area
            (startdate DATE,
             enddate DATE,
             class CHAR(20))
          ON COMMIT DELETE ROWS;
    EXAMPLE:
    SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area
      2          (startdate DATE,
      3           enddate DATE,
      4           class CHAR(20))
      5        ON COMMIT DELETE ROWS;
    SQL> create table permernate( a number);
    SQL> insert into admin_work_area values(sysdate,sysdate,'temperary table');
    SQL> insert into permernate values(1);
    SQL> commit;
    SQL> select * from admin_work_area;
    SQL> select  * from permernate;
    A
    1
    2)ON COMMIT PRESERVE ROWS 定義了創(chuàng)建會話級臨時表的方法.
    CREATE GLOBAL TEMPORARY TABLE admin_work_area
            (startdate DATE,
             enddate DATE,
             class CHAR(20))
         ON COMMIT PRESERVE ROWS;
    EXAMPLE:

    會話1:
    SQL> drop table admin_work_area;
    SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area
      2          (startdate DATE,
      3           enddate DATE,
      4           class CHAR(20))
      5       ON COMMIT PRESERVE ROWS;
    SQL> insert into permernate values(2);
    SQL> insert into admin_work_area values(sysdate,sysdate,'session temperary');
    SQL> commit;
    SQL> select * from permernate;

             A
    ----------
             1
             2

    SQL> select * from admin_work_area;

    STARTDATE  ENDDATE    CLASS
    ---------- ---------- --------------------
    17-1ÔÂ -03 17-1ÔÂ -03 session temperary

    會話2:

    SQL> select * from permernate;

             A
    ----------
             1
             2

    SQL> select * from admin_work_area;

    未選擇行.

    會話2看不見會話1中臨時表的數(shù)據(jù).

     

    4 ORACLE臨時表和SQLSERVER臨時表異同

    SQL SERVER臨時表
    也可以創(chuàng)建臨時表。臨時表與永久表相似,但臨時表存儲在 tempdb 中,當不再使用時會自動刪除。
    有本地和全局兩種類型的臨時表,二者在名稱、可見性和可用性上均不相同。本地臨時表的名稱以單個數(shù)字符號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 Microsoft® SQL Server™ 2000 實例斷開連接時被刪除。全局臨時表的名稱以數(shù)學符號 (##) 打頭,創(chuàng)建后對任何用戶都是可見的,當所有引用該表的用戶從 SQL Server 斷開連接時被刪除。
    例如,如果創(chuàng)建名為 employees 的表,則任何人只要在數(shù)據(jù)庫中有使用該表的安全權限就可以使用該表,除非它已刪除。如果創(chuàng)建名為 #employees 的本地臨時表,只有您能對該表執(zhí)行操作且在斷開連接時該表刪除。如果創(chuàng)建名為 ##employees 的全局臨時表,數(shù)據(jù)表中的任何用戶均可對該表執(zhí)行操作。如果該表在您創(chuàng)建后沒有其他用戶使用,則當您斷開連接時該表刪除。如果該表在您創(chuàng)建后有其他用戶使用,則 SQL Server在所有用戶斷開連接后刪除該表
    不同:
    1.        SQL SERVER臨時表是一種”內(nèi)存表”,表是存儲在內(nèi)存中的.ORACLE臨時表除非執(zhí)行DROP TABLE,否則表定義會保留在數(shù)據(jù)字典中.
    2.        SQL SERVER臨時表不存在類似ORACLE臨時表 事務級別 上的功能.
    3        SQL SERVER本地臨時表(#) 與 ORACLE的會話級別臨時表類似,但是在會話退出的時候,ORACLE不會刪除表.
    4        SQL SERVER的全局臨時表(##) 是指多個連接共享同一片內(nèi)存.當沒有指針引用該內(nèi)存區(qū)域時,SQL SERVER自動釋放全局臨時表.
    5        由于ORACLE不是一種 內(nèi)存中的數(shù)據(jù)庫. 所以如果ORACLE類似SQL SERVER 頻繁的對臨時表進行建立和刪除,必定會影響性能.所以ORACLE會保留臨時表的定義直到用戶DROP TABLE.
    6        在ORACLE中,如果需要多個用戶共享一個表(類似SQL SERVER的全局臨時表##).則可以利用永久表,并且在表中添加一些可以唯一標識用戶的列.利用觸發(fā)器和視圖.當用戶退出的時候,根據(jù)該登陸用戶的唯一信息刪除相應的表中的數(shù)據(jù). 這種方法給ORACLE帶來了一定量的負載.



    歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人

    posted on 2007-06-27 10:41 見酒就暈 閱讀(149) 評論(0)  編輯  收藏 所屬分類: DB

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲色在线无码国产精品不卡| ZZIJZZIJ亚洲日本少妇JIZJIZ| 国产91色综合久久免费分享| 成人黄18免费视频| 国产亚洲精品精品国产亚洲综合 | jizz18免费视频| WWW免费视频在线观看播放| 免费女人高潮流视频在线观看| 久久久久久免费视频| 亚洲av午夜成人片精品电影| 久久精品国产96精品亚洲 | 在线A亚洲老鸭窝天堂| 亚洲综合校园春色| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 亚洲精品国产日韩无码AV永久免费网| 亚洲AV日韩AV永久无码久久| 亚洲免费综合色在线视频| 免费看无码特级毛片| 国内外成人免费视频| 亚洲老妈激情一区二区三区| 亚洲一区AV无码少妇电影| 国外成人免费高清激情视频| 国产亚洲精品成人久久网站| 99热在线免费播放| 亚洲中文字幕无码mv| 亚洲精品第一国产综合境外资源| 国产精品无码永久免费888| 亚洲国产第一页www| 中国好声音第二季免费播放| 国产一区视频在线免费观看| 亚洲国产精品成人综合色在线婷婷| 无遮挡a级毛片免费看| 18禁成年无码免费网站无遮挡| 久久亚洲国产中v天仙www | eeuss免费影院| 一区二区三区亚洲| 99视频免费播放| 亚洲熟妇无码八V在线播放| 亚洲国产人成中文幕一级二级| 久久久久久国产精品免费免费男同 | 两个人看的www免费高清|