Oracle資料庫開發——臨時表
關於臨時表,在Oracle資料庫中可以使用create global temporary table 語句來建立。
臨時表建立後,其結構將一直存在,但是其中的資料在特定的條件下自動釋放。
依據釋放的條件不同,臨時表分為 事務級臨時表 和 會話級臨時表。
建立語法create global temporary table() on commit {delete 事務級 | preserve 會話級} rows;
例:建立如下3張表
--普通堆表
create table student
(s_id integer primary key
,sname varchar2(10)
);
--事務級臨時表
create global temporary table student_tmp1
(s_id integer primary key
,sname varchar2(10)
)on commit delete rows;
--會話級臨時表
create global temporary table student_tmp2
(s_id integer primary key
,sname varchar2(10)
)on commit preserve rows;
檢視定義(臨時表TABLESPACE_NAME項為空,插入資料的時候應該時候應該放到臨時表空間吧,有興趣自己去求證一下吧)
SQL> select x.TABLE_NAME,x.TABLESPACE_NAME,x.TEMPORARY from user_tables x where x.TABLE_NAME in ('STUDENT_TMP1','STUDENT_TMP2','STUDENT');
TABLE_NAME TABLESPACE_NAME TEMPORARY
------------------------------ ------------------------------ ---------
STUDENT USERS N
STUDENT_TMP1 Y
STUDENT_TMP2 Y
接下來,看事務級臨時表與會話級臨時表的區別
SQL> insert into student_tmp1 values (12345,'criss');
1 row inserted
SQL> insert into student_tmp2 values (12345,'criss');
1 row inserted
SQL> select * from student_tmp1;
S_ID SNAME
--------------------------------------- ----------
12345 criss
SQL> select * from student_tmp2;
S_ID SNAME
--------------------------------------- ----------
12345 criss
未提交前,兩張臨時表都能查到資料,下面進行提交,再次查詢
SQL> commit;
Commit complete
SQL> select * from student_tmp1;
S_ID SNAME
--------------------------------------- ----------
SQL> select * from student_tmp2;
S_ID SNAME
--------------------------------------- ----------
12345 criss
此時,事務級臨時表(student_tmp1)資料被清空。會話級臨時表(student_tmp2)資料仍保留。
總結一下:在事務提交時,事務級臨時表中的資料會被系統自動刪除。
會話級臨時表在會話斷開前,其中的資料不會刪除,斷開後清空。
臨時表建立後,其結構將一直存在,但是其中的資料在特定的條件下自動釋放。
依據釋放的條件不同,臨時表分為 事務級臨時表 和 會話級臨時表。
建立語法create global temporary table() on commit {delete 事務級 | preserve 會話級} rows;
例:建立如下3張表
--普通堆表
create table student
(s_id integer primary key
,sname varchar2(10)
);
--事務級臨時表
create global temporary table student_tmp1
(s_id integer primary key
,sname varchar2(10)
)on commit delete rows;
--會話級臨時表
create global temporary table student_tmp2
(s_id integer primary key
,sname varchar2(10)
)on commit preserve rows;
檢視定義(臨時表TABLESPACE_NAME項為空,插入資料的時候應該時候應該放到臨時表空間吧,有興趣自己去求證一下吧)
SQL> select x.TABLE_NAME,x.TABLESPACE_NAME,x.TEMPORARY from user_tables x where x.TABLE_NAME in ('STUDENT_TMP1','STUDENT_TMP2','STUDENT');
TABLE_NAME TABLESPACE_NAME TEMPORARY
------------------------------ ------------------------------ ---------
STUDENT USERS N
STUDENT_TMP1 Y
STUDENT_TMP2 Y
接下來,看事務級臨時表與會話級臨時表的區別
SQL> insert into student_tmp1 values (12345,'criss');
1 row inserted
SQL> insert into student_tmp2 values (12345,'criss');
1 row inserted
SQL> select * from student_tmp1;
S_ID SNAME
--------------------------------------- ----------
12345 criss
SQL> select * from student_tmp2;
S_ID SNAME
--------------------------------------- ----------
12345 criss
未提交前,兩張臨時表都能查到資料,下面進行提交,再次查詢
SQL> commit;
Commit complete
SQL> select * from student_tmp1;
S_ID SNAME
--------------------------------------- ----------
SQL> select * from student_tmp2;
S_ID SNAME
--------------------------------------- ----------
12345 criss
此時,事務級臨時表(student_tmp1)資料被清空。會話級臨時表(student_tmp2)資料仍保留。
總結一下:在事務提交時,事務級臨時表中的資料會被系統自動刪除。
會話級臨時表在會話斷開前,其中的資料不會刪除,斷開後清空。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28929558/viewspace-1148357/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQLServer資料庫中建立臨時表SQLServer資料庫
- 臨時表在Oracle資料庫與SQL Server資料庫中的異同Oracle資料庫SQLServer
- Oracle資料庫開發——表(概念)Oracle資料庫
- 【Oracle-資料庫維護】-刪除臨時表空間Oracle資料庫
- oracle臨時表Oracle
- Oracle 臨時表Oracle
- 資料庫優化之臨時表優化資料庫優化
- 資料庫臨時表有舍才有得DP資料庫
- oracle臨時表的經典學習資料Oracle
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- ORACLE臨時表和SQLSERVER臨時表異同OracleSQLServer
- Oracle的臨時表Oracle
- Oracle資料庫開發——瞭解分割槽表Oracle資料庫
- Oracle資料庫開發——表(資料完整性約束)Oracle資料庫
- Oracle Temporary Tables(Oracle 臨時表)Oracle
- . 資料庫臨時表空間的資料檔案的丟失資料庫
- oracle 臨時表的使用Oracle
- ORACLE臨時表總結Oracle
- Oracle全域性臨時表Oracle
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- oracle臨時表的用法Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 故障分析 | MySQL 5.7 使用臨時表導致資料庫 CrashMySql資料庫
- Oracle中用子查詢建立臨時表 並賦值資料Oracle賦值
- sql server 建臨時表修改資料SQLServer
- Oracle資料庫開發——序列Oracle資料庫
- Oracle 臨時表空間概念Oracle
- oracle臨時表空間組Oracle
- Oracle臨時表GLOBAL TEMPORARY TABLEOracle
- oracle的臨時表空間Oracle
- Oracle Temp 臨時表空間Oracle
- oracle臨時表的用法(轉)Oracle
- Oracle 基礎 ----臨時表和物件表Oracle物件
- Oracle資料庫開發指南(二)Oracle資料庫
- ORACLE資料庫開發經驗Oracle資料庫
- Oracle臨時表使用注意事項Oracle
- oracle臨時表空間相關Oracle