web-dev-qa-db-ja.com

Postgresql:一時テーブルがpostgresqlで削除されたとき

一時テーブルにデータを挿入し、正常に動作しています。以下は、同じのpsedo sqlコードです

with cte as(

)
select * 
into temp_table
from cte

このアプローチでは、データは一時テーブルに非常に高速に挿入されます。私の知っているように、セッションが閉じられると一時テーブルは削除されます。しかし、pgadmin接続を閉じても、一時テーブルは削除されません。

私の質問は、postgresqlの一時テーブルが自動的に削除されるのか、それとも削除するまでディスク領域に残っているのかです。

よろしく、

サンジャイ・サランケ

6
user2274074

実際、通常のテーブルを作成しました。これが一時テーブルであることを指定する必要があります。

with cte as(
-- <a_query>
)
select * 
into temporary temp_table
from cte;

または(推奨される構文):

create temporary table temp_table as
-- <a_query>

SELECT INTO および CREATE TABLE AS。 を参照してください。

6
klin

Postgresドキュメント によると、一時テーブルはセッションの終了時またはトランザクションの終了時に削除されます。

TEMPORARYまたはTEMP

指定した場合、テーブルは一時テーブルとして作成されます。 一時テーブルは、セッションの終わりに、またはオプションで現在のトランザクションの終わりに自動的に削除されます(以下のON COMMITを参照)。同じ名前の既存の永続テーブルは、スキーマ修飾名で参照されない限り、一時テーブルが存在している間は現在のセッションから見えません。一時テーブルに作成されたインデックスも自動的に一時的です。

3
McNets