ORACLE的臨時表

2021-09-08 03:43:44 字數 1658 閱讀 9183

建立oracle的臨時表

create global temporary

table

tablename (

col1

varchar2(10

),col2

number

) on

commit preserve(delete) rows ;

這種臨時表不占用表空間,而且不同的session之間互相看不到對方的資料

在會話結束後表中的資料自動清空,如果選了delete rows,則在提交的時候即清空資料,preserve則一直到會話結束

在oracle8i中,可以建立以下兩種臨時表:

(1)會話特有的臨時表

create global temporary ()

on commit preserve rows;

(2)事務特有的臨時表

create global temporary ()

on commit delete rows;

create global temporary table mytemptable

所建的臨時表雖然是存在的,但是你試一下insert 一條記錄然後用別的連線登上去select,記錄是空的,明白了吧,我把下面兩句話再貼一下:

--on commit delete rows 說明臨時表是事務指定,每次提交後oracle將截斷表(刪除全部行)

--on commit preserve rows 說明臨時表是會話指定,當中斷會話時oracle將截斷表。

衝突的問題更本不用考慮.

臨時表只是儲存當前會話(session)用到的資料,資料只在事務或會話期間存在。

通過create global temporary table命令建立乙個臨時表,對於事務型別的臨時表,

資料只是在事務期間存在,對於會話型別的臨時表,資料在會話期間存在。

會話的資料對於當前會話私有。每個會話只能看到並修改自己的資料。dml鎖不會加到

臨時表的資料上。下面的語句控制行的存在性。

● on commit delete rows 表名行只是在事務期間可見

● on commit preserve rows 表名行在整個會話期間可見

可以對臨時表建立索引,檢視,出發器,可以用export和import工具匯入匯出表的

定義,但是不能匯出資料。表的定義對所有的會話可見。

例如:

create global temporary

table

temp_tab1(

table_name

varchar2(20

),primary_key

varchar2(100

),field

varchar2(1000

))on

commit preserve rows;

create global temporary

table

temp_tab2(

table_name

varchar2(20

),primary_key

varchar2(100

),field

varchar2(1000

))on

commit

delete rows;

oracle的臨時表

oracle的臨時表在應用系統中有很大的作用,它可以讓使用者只能夠操作各自的資料中而互不干擾,不用擔心會破壞或影響其他session transaction的資料,這也是資料安全的一種解決方法。臨時表分為session transaction兩種,session級的臨時表資料在整個session都存...

ORACLE的臨時表

oracle的臨時表在應用系統中有很大的作用,它可以讓使用者只能夠操作各自的資料中而互不干擾,不用擔心會破壞或影響其他session transaction的資料,這也是資料安全的一種解決方法。臨時表分為session transaction兩種,session級的臨時表資料在整個session都存...

oracle的臨時表

一.事務級臨時表是指該臨時表與事務相關,當進行事務提交或者事務回滾的時候,臨時表中的資料將自行被截斷,其他的內容和會話級的臨時表的一致 後面加入on commit preserve rows create global temporary table admin work area startdat...