建立oracle的臨時表
create global temporarytable
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 temporarytable
temp_tab1(
table_name
varchar2(20
),primary_key
varchar2(100
),field
varchar2(1000
))on
commit preserve rows;
create global temporarytable
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...