Postgresql臨時表


https://www.cnblogs.com/baisha/p/8074716.html

PostgreSQL支持兩類臨時表,會話級和事務級臨時表。在會話級別的臨時表中,在整個會話的生命周期中,數據一直保存。事務級臨時表,數據只存在於這個事務的生命周期中。不指定臨時表的屬性,

PostgreSQL中,不管是事務級還是會話級臨時表,當會話結束時,臨時表就會消失。這與oracle數據庫不同,在oracle數據庫中,只是臨時表中的數據消失,而臨時表還存在。

示例:

創建臨時表temp

 

使用其他會話查看臨時表,可以看到查詢不到臨時表temp

 

使用“pg_temp_5.temp”可以查詢到temp的信息

 

關閉創建臨時表的會話,使用另一個會話再次查看,表已經被刪除。

 

創建臨時表,當前會話可以正常訪問臨時表中數據

 

使用另一個會話查詢該臨時表中的數據,不能查詢數據

 

如果在兩個不同的session中創建一個同名的臨時表,實際上創建的是兩張不同的表。

使用另一會話創建同名臨時表 ,示例如下:

 

 

創建事務級臨時表,示例如下

 

總結

PostgreSQL臨時表是schema下所生成的一個特殊的表,這個schema的名稱為“pg_temp_n”,其中n代表數字,不同的session數字不同。

一個會話創建的臨時表不能被其他會話訪問。

默認情況下,創建的臨時表是會話級的,如果需要創建事務。需要添加“on commit delete rows”子句。(注:“on commit”子句形式有三種:“on commit preserve rows”,默認值,會話級;“on commit delete rows”,事務級,事務結束,刪除數據;“on commit drop”,事務級,事務結束,刪除臨時表)

創建臨時表的關鍵字“temporary”可以縮寫為“temp”。

 

PostgreSQL為了與其他數據庫創建臨時表的語句保持兼容,還沒有“GLOBAL”和“LOCAL”關鍵字,但兩個關鍵字沒有用處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM