【PostgreSQL】一時テーブル
概要
一時テーブルは、作成したセッション内でのみ使用できる。
セッション終了時には自動で削除されるため、中間データの保持や一時的な集計処理などに利用できる。
基本形
code:CREATE_TEMP_01.sql
CREATE TEMP TABLE temp_sample(
id integer,
name text
);
code:CREATE_TEMP_02.sql
CREATE TEMPORARY TABLE temp_sample(
id integer,
name text
);
TEMP は TEMPORARY の省略形。
データを取得する
一時テーブルのデータは、通常のテーブルと同じように SELECT で取得できる。
code:SELECT_01.sql
SELECT * FROM temp_sample;
SELECT結果から一時テーブルを作る
CREATE TEMP TABLE … AS SELECT … を使用すると、SELECT の結果をもとに一時テーブルを作成できる。
code:CREATE_TEMP_SELECT_01.sql
CREATE TEMP TABLE temp_user AS
SELECT
id
, name
, email
FROM
users
WHERE
deleted_at IS NULL;
テーブルを削除する
一時テーブルはセッション終了時に自動で削除される。
明示的に途中で消したい場合は DROP TABLE します。
code:DROP_TABLE_01.sql
DROP TABLE temp_sample;
トランザクション終了時に削除したい場合
ON COMMIT DROP を指定すると、トランザクション終了時に一時テーブルが削除される。
code:ON_COMMIT_DROP_01.sql
BEGIN;
CREATE TEMP TABLE temp_sample (
id integer,
name text
) ON COMMIT DROP;
INSERT INTO temp_sample VALUES (1, '山田');
SELECT * FROM temp_sample;
COMMIT; -- ここで temp_sample は削除される
テーブル定義を残しデータのみを削除する場合は ON COMMIT DELETE ROWS を使用する。