ORACLE 臨時表用法

2021-04-29 22:29:08 字數 1472 閱讀 6582

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 臨時表用法

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