??? create
global
temporary
table
t66 (
???
?
ID
number
,
???
?
NAME
varchar2
(
20
),
??? ? OP_DATE
date
)
??? on commit delete rows ;--數據提交時清空表
??? create
global
temporary
table
t66 (
???
?
ID
number
,
???
?
NAME
varchar2
(
20
),
??? ? OP_DATE
date
)
??? on commit preserve rows ;--會話結束時清空表
??? select owner,table_name,tablespace_name from dba_tables where table_name= 'T66';
??????????????? *
??? ORA-01542: 表空間'TEMP'脫機,無法在其中分配空間
??? 因此,對于這種案例就可以采用創建臨時表 (ON COMMIT PRESERVE ROWS) 的方法來解決。數據只在 SESSION 期間有效,對于結算成功的有效數據,轉移到最終表中后,ORACLE自動TRUNCATE 臨時數據;對于放棄結算的數據,ORACLE 同樣自動進行 TRUNCATE ,而無須編碼控制,并且最終表只處理有效訂單,減輕了頻繁的DML的壓力。