PostgreSQL:臨時表
語法
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [ { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option ... ] } [, ... ] ] ) [ INHERITS ( parent_table [, ... ] ) ] [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE tablespace_name ]
-
GLOBAL和LOCAL在這個語法中是一樣的, 沒有分別, 但是在SQL標準中是不一樣的.
-
ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP
-
PRESERVE ROWS 表示臨時表的資料在事務結束後保留.
-
DELETE ROWS 表示臨時表的資料在事務結束後truncate掉.
-
DROP 表示臨時表在事務結束後刪除.
-
預設使用的是PRESERVE ROWS.
示例
-
臨時表在會話結束後會自動刪除(或者在事務結束後刪除 on commit drop).
-
會話1 :
pg9.2.0@db-172-16-3-150-> psql digoal digoal psql (9.2.0) Type "help" for help. digoal=> create temp table t(id int); CREATE TABLE digoal=> select relname,relnamespace,oid from pg_class where relname='t'; relname | relnamespace | oid ---------+--------------+------- t | 41192 | 41203 (1 row) digoal=> select nspname from pg_namespace where oid=41192; nspname ----------- pg_temp_2 (1 row)
-
退出會話1後重進, 臨時表已經被刪除了。
digoal=> \q pg9.2.0@db-172-16-3-150-> psql digoal digoal psql (9.2.0) Type "help" for help. digoal=> select nspname from pg_namespace where oid=41192; nspname ----------- pg_temp_2 (1 row) digoal=> select relname,relnamespace,oid from pg_class where relname='t'; relname | relnamespace | oid ---------+--------------+----- (0 rows)
-
每個會話中需要使用臨時表的話需要重新建立. 好處是不同的會話能夠使用同名但是不同結構的臨時表。
-
會話 1
pg9.2.0@db-172-16-3-150-> psql digoal digoal psql (9.2.0) Type "help" for help. digoal=> create temp table t(id int); CREATE TABL
-
會話 2
pg9.2.0@db-172-16-3-150-> psql digoal digoal psql (9.2.0) Type "help" for help. digoal=> create temp table t(id text,id2 int); CREATE TABLE digoal=> select relname,relnamespace,oid from pg_class where relname='t'; relname | relnamespace | oid ---------+--------------+------- t | 11194 | 41206 t | 41192 | 41209 (2 rows) digoal=> select nspname from pg_namespace where oid in (11194, 41192); nspname ----------- pg_temp_1 pg_temp_2 (2 rows)
-
會話3
pg9.2.0@db-172-16-3-150-> psql digoal digoal psql (9.2.0) Type "help" for help. digoal=> create temp table t(id text,id2 int,info text); CREATE TABLE digoal=> select relname,relnamespace,oid from pg_class where relname='t'; relname | relnamespace | oid ---------+--------------+------- t | 11194 | 41206 t | 41192 | 41209 t | 41215 | 41217 (3 rows) digoal=> select nspname from pg_namespace where oid in (11194, 41192, 41215); nspname ----------- pg_temp_1 pg_temp_2 pg_temp_3 (3 rows)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2742045/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL臨時表MySql
- MySQL之臨時表MySql
- mysql 建立臨時表MySql
- MySQL 5.7 新特性 共享臨時表空間及臨時表改進MySql
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- mysql臨時表,臨時表空間,ibtmp1表空間暴增原因初探MySql
- ORACLE臨時表總結Oracle
- oracle 臨時表的使用Oracle
- SQLServer臨時表的使用SQLServer
- MySQL 中的臨時表MySql
- Oracle 臨時表 OracleDataAdapter 批次更新OracleAPT
- [20181108]with temp as 建立臨時表嗎.txt
- Oracle臨時表使用注意事項Oracle
- oracle臨時表空間相關Oracle
- 4.2.1.8規劃臨時表空間
- 刪除臨時表空間組
- MySQL InnoDB臨時表空間配置MySql
- PostgreSQL官方並行更新時間表SQL並行
- 2.5.7 建立預設臨時表空間
- 清理臨時表規範以及指令碼指令碼
- mysql關於臨時表的總結MySql
- Oracle臨時表的用法總結FLOracle
- MySQL-37:記憶體臨時表MySql記憶體
- MySQL什麼時候會使用內部臨時表?MySql
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- 消除臨時表空間暴漲的方法
- 關於with 臨時表 as的一些用法
- MySQL8.0新特性-臨時表的改善MySql
- SQLServer如何釋放tempdb臨時表空間SQLServer
- PostgreSQL:表SQL
- [20181021]臨時表lob段建立在哪裡.txt
- PostgreSQLOracle相容性之-全域性臨時表globaltemptableSQLOracle
- MYSQL造資料佔用臨時表空間MySql
- oracle 臨時表空間的增刪改查Oracle
- 資料庫臨時表有舍才有得DP資料庫
- mysql複製中臨時表的運用技巧MySql
- 資料庫優化之臨時表優化資料庫優化
- oracle11g 查詢臨時表空間的使用率和正在使用臨時表空間的使用者Oracle