本篇文章給大家?guī)砹岁P(guān)于Oracle的相關(guān)知識,其中主要介紹了關(guān)于臨時表的相關(guān)問題,包括了事務(wù)級臨時表、會話級臨時表等等內(nèi)容,下面一起來看一下,希望對大家有幫助。
推薦教程:《Oracle視頻教程》
一、Oracle 臨時表
臨時表是一種特殊的表。當我們需要對某一(也可以是多個)表中的一批數(shù)據(jù)進行反復(fù)的操作時,通過對這批數(shù)據(jù)創(chuàng)建一個臨時表,可能會簡化操作并且有可能提高效率!
基本語法:
create global temporary table 臨時表名(colum,colum,.......)on commit delete rows;on commit preserve rows;
說明:
- on commit delete rows; 說明數(shù)據(jù)行只有在當前事務(wù)中可見,也是默認值,事務(wù)提交后數(shù)據(jù)行將消失;創(chuàng)建的是事務(wù)級臨時表。
- on commit preserve rows; 說明數(shù)據(jù)行僅在當前會話中可見;創(chuàng)建的是會話級臨時表。
二、示例演示
2.1、事務(wù)級臨時表
-- 創(chuàng)建事務(wù)級臨時表 tmp_user 注:on commit delete rows 可省略create global temporary table tmp_user ( user_id varchar2(10), user_name varchar2(20)) on commit delete rows;
2.2、會話級臨時表
-- 創(chuàng)建會話級臨時表 tmp_user1create global temporary table tmp_user1 ( user_id varchar2(10), user_name varchar2(20))on commit preserve rows;
三、臨時表說明
- 臨時表的數(shù)據(jù)是基于一個會話或一個事務(wù)的,其它的會話不能訪問到。
-
臨時表可專用于事務(wù)處理,也可專用于會話。對于專用于事務(wù)處理的臨時表而言,數(shù)據(jù)存在于事務(wù)處理期間;對于專用于會話的臨時表而言,數(shù)據(jù)存在于會話期間。在這兩種情況下,會話插入的數(shù)據(jù)專用于會話。每個會話僅可查看和修改自己的數(shù)據(jù)。因此,臨時表的數(shù)據(jù)從不會獲得 DML 鎖
推薦教程:《Oracle視頻教程》