▼
TEMPORARY TABLE自動刪除資料的時機
TEMPORARY TABLE會依據不同的使用者,分配各自獨立的Temp Segment,
如此一來,就可以讓不同的使用者,獨自操作Temporary Table,而不會互相干擾。
而在創建Temporary Table有一個指定參數,可以決定什麼時候要刪除資料。
1、ON COMMIT DELETE ROWS(只要commit就將資料除)
CREATE GLOBAL TEMPORARY TABLE CUSADMIN.TMP_GGG
(
A VARCHAR2(100 BYTE),
B VARCHAR2(100 BYTE)
)
ON COMMIT DELETE ROWS
NOCACHE;
測試:
SQL> insert into cusadmin.tmp_ggg values('aa','bb');
1 row created.
SQL> select * from cusadmin.tmp_ggg;
A B
------- -----------
aa bb
SQL> commit;
Commit complete.
SQL> select * from cusadmin.tmp_ggg;
no rows selected
2、ON COMMIT PRESERVE ROWS(在同一Sessin期間,資料是保存的)
CREATE GLOBAL TEMPORARY TABLE CUSADMIN.TMP_GGG
(
A VARCHAR2(100 BYTE),
B VARCHAR2(100 BYTE)
)
ON COMMIT PRESERVE ROWS
NOCACHE;
測試:
SQL> insert into cusadmin.tmp_ggg values('aa','bb');
1 row created.
SQL> select * from cusadmin.tmp_ggg;
A B
------ --------
aa bb
SQL> commit;
Commit complete.
SQL> select * from cusadmin.tmp_ggg;
A B
------ --------
aa bb
SQL> disconnect;
SQL> connect cusadmin/XXXXX@test
Connected.
SQL> select * from cusadmin.tmp_ggg;
no rows selected
在建立Temporary Table時,其預設參數為ON COMMIT DELETE ROWS,
但是有時候在撰寫程式時,都會有數個commit,再取出資料的動作,
此時最好是使用ON COMMIT PRESERVE ROWS。