天天看點

Oracle DB 臨時表

  • 臨時表

• 會話或事務處理結束時會自動清除存儲資料 • 為每個會話提供專用資料存儲 • 可供所有會話使用,而不影響各個會話的專用資料

如果需要存儲專用資料以執行某一任務,而且要在執行該任務後,事務處理或會話結束時 清除資料,則可以利用臨時表。臨時表提供了這種功能,這樣你不必在其它會話中隐藏數 據,也不必在結束時删除所生成的資料。對于某一會話來說,唯一可見的臨時表資料是該 會話已經插入的資料。 臨時表可專用于事務處理,也可專用于會話。對于專用于事務處理的臨時表而言,資料存 在于事務處理期間;對于專用于會話的臨時表而言,資料存在于會話期間。在這兩種情況 下,會話插入的資料專用于會話。每個會話僅可檢視和修改自己的資料。是以,臨時表的 資料從不會獲得DML 鎖。 下列子句控制着行的生存期: • ON COMMIT DELETE ROWS :指定插入行的生存期僅為事務處理的持續時間 • ON COMMIT PRESERVE ROWS :指定插入行的生存期為會話的持續時間

  • 臨時表:注意事項

• 使用GLOBAL TEMPORARY 子句建立臨時表: CREATE GLOBAL TEMPORARY TABLE employees_temp ON COMMIT PRESERVE ROWS AS SELECT * FROM employees;

• 使用TRUNCATE TABLE 指令删除表内容。 • 在臨時表中可建立下列項: – 索引 – 視圖 – 觸發器

使用CREATE GLOBAL TEMPORARY TABLE 語句可建立臨時表。在臨時表中可以建立索 引、視圖及觸發器,還可以使用“Export and Import(導出和導入)”或“Data Pump(數 據泵)”導出和導入臨時表的定義。但是,即使使用了ROWS 選項,也不會導出資料。 除了上述已經提到的會導緻删除資料的事件,還可以使用TRUNCATE TABLE 指令有效地 強制删除資料。使用這個指令可删除所有已插入的資料。使用這個指令比使用DELETE 指令更有效。

在臨時表中可以建立索引、視圖及觸發器。 單擊“Create Table: Table Organization(建立表:表組織)頁上的“Temporary(臨時)” 選項,可以使用Enterprise Manager 建立臨時表。單擊“Continue (繼續)”,在下一頁 中可指定臨時表是專用于會話還是專用于事務處理。“Tablespace(表空間)”字段處于 禁用狀态,因為總是在使用者的臨時表空間中建立臨時表;不能指定其它表空間。

Oracle DB 臨時表

注:GLOBAL 關鍵字是基于國際标準化組織(ISO)  在SQL 标準中指定的術語建立的。