PostgreSQL の一時テーブルは作成してからセッションが有効な間だけアクセスできるテーブルです。
複雑な SQL になったり、データの一部を抜き出して加工した値を一時的にテーブルに保管して処理をする際などに便利な機能です。
PostgreSQL の一時テーブルはセッション内のみ有効なので、セッションが切断された時には自動でテーブルが削除されるので、不要なテーブルが残ってしまうこともありません。
また、他のセッションからも見れないので、同じ一時テーブル名が存在しても、セッションが異なればエラーにならず、それぞれの処理で同じテーブル名が使えることになります。
(アプリケーションで管理するテーブル名の数を減らすことができます。)
PostgreSQLで一時テーブルを作成する
PostgreSQL で一時テーブルを作成するには CREATE TEMPORARY TABLE 文を使用します。
(TEMPORARY は TEMP でも OK です。)
CREATE { TEMPORARY | TEMP } TABLE [作成するテーブル名] ( [カラム名] [カラムの型] ・ ・ ・ )
実際には
CREATE TEMPORARY TABLE tmp_table ( name varchar(20) unique ,age int ); INSERT INTO tmp_table VALUES ('name1', 10),('name2',20); select * from tmp_table;
のように使います。
当然、同一セッション内で同じ名前の一時テーブルを作成しにくと
ERROR: リレーション"tmp_table"はすでに存在します SQL 状態: 42P07
と、エラーになります。