本站不再更新,歡迎光臨 java開發(fā)技術網(wǎng)
          隨筆-230  評論-230  文章-8  trackbacks-0
          在Oracle8i或以上版本中,可以創(chuàng)建以下兩種臨時表:
          1。會話特有的臨時表
              CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
              ON COMMIT PRESERVE ROWS;
            
          2。事務特有的臨時表
              CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
              ON COMMIT DELETE ROWS;
             CREATE GLOBAL TEMPORARY TABLE MyTempTable
          所建的臨時表雖然是存在的,但是你試一下insert 一條記錄然后用別的連接登上去select,記錄是空的,明白了吧,我把下面兩句話再貼一下:
          --ON COMMIT DELETE ROWS 說明臨時表是事務指定,每次提交后ORACLE將截斷表(刪除全部行)
          --ON COMMIT PRESERVE ROWS 說明臨時表是會話指定,當中斷會話時ORACLE將截斷表。
          沖突的問題更本不用考慮.
            
          臨時表只是保存當前會話(session)用到的數(shù)據(jù),數(shù)據(jù)只在事務或會話期間存在。
            
          通過CREATE GLOBAL TEMPORARY TABLE命令創(chuàng)建一個臨時表,對于事務類型的臨時表,
          數(shù)據(jù)只是在事務期間存在,對于會話類型的臨時表,數(shù)據(jù)在會話期間存在。
            
          會話的數(shù)據(jù)對于當前會話私有。每個會話只能看到并修改自己的數(shù)據(jù)。DML鎖不會加到
          臨時表的數(shù)據(jù)上。下面的語句控制行的存在性。
            
          ● ON COMMIT DELETE ROWS 表名行只是在事務期間可見
          ● ON COMMIT PRESERVE ROWS 表名行在整個會話期間可見
            
          可以對臨時表創(chuàng)建索引,視圖,出發(fā)器,可以用export和import工具導入導出表的
          定義,但是不能導出數(shù)據(jù)。表的定義對所有的會話可見。


          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ù).
          posted on 2007-06-20 17:34 有貓相伴的日子 閱讀(3939) 評論(1)  編輯  收藏 所屬分類: pl/sql

          評論:
          # re: oracle臨時表 2014-05-02 14:48 | 2
          方法  回復  更多評論
            
          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(32)

          隨筆分類(222)

          隨筆檔案(224)

          文章分類(4)

          文章檔案(7)

          相冊

          收藏夾(4)

          最新評論

          閱讀排行榜

          評論排行榜

          本站不再更新,歡迎光臨 java開發(fā)技術網(wǎng)
          主站蜘蛛池模板: 永德县| 滁州市| 濉溪县| 当涂县| 北宁市| 衡阳县| 镇江市| 洞口县| 璧山县| 南木林县| 吴江市| 郑州市| 安化县| 新安县| 镇安县| 平罗县| 唐海县| 棋牌| 天镇县| 历史| 民勤县| 图木舒克市| 绥棱县| 出国| 揭阳市| 大安市| 通道| 乐业县| 广灵县| 上栗县| 措勤县| 井陉县| 西畴县| 广平县| 鹿邑县| 原阳县| 蓝山县| 台山市| 洞口县| 广安市| 乐都县|