一時テーブルを作成する

テーブルを作成するときに TEMPORARY を指定することで一時テーブルを作成することができます。一時テーブルはセッション中だけ存在し、セッションが終了すると自動で削除されます。ここでは PostgreSQL で一時テーブルを作成する方法および利用する方法について解説します。

(Last modified: )

一時テーブルの使い方

データの処理を行っている時などに一時的にデータを格納するためのテーブルを作成して利用したい場合があります。このような時に一時テーブルを作成すると、セッションが終了すると同時に削除されるので削除のし忘れもなく便利です。一時テーブルを作成するための書式は次の通りです。

CREATE { TEMPORARY | TEMP } TABLE table_name (
  column_name data_type
)

CREATE TABLE コマンドを実行するときに TEMPORARY または TEMP を付けると一時テーブルとして作成されます。

作成する一時テーブルは利用者が作成したスキーマの中には作成できません。あとで実際に試してみますが、 pg_temp_3 という特別なスキーマの中に作成されるようです。

-- --

それでは実際に試してみます。 mydb データベースに一時テーブルとして次のようなテーブルを作成しました。

create temp table temptbl (
  id integer unique,
  name varchar(10)
);

一時テーブルの使い方(1)

psql メタコマンドの \dt コマンドを使って作成したテーブルに関する情報を表示してみます。

\dt temptbl

一時テーブルの使い方(2)

作成されたテーブルは pg_temp_3 スキーマの中に作成されています。

また psql メタコマンドの \d コマンドを使って作成したテーブルのカラムに関する情報を表示してみます。

\d temptbl

一時テーブルの使い方(3)

今回作成した一時テーブルには UNIQUE 制約を設定しましたが、一時テーブルであってもインデックスが作成されていることが確認できました。 psql メタコマンドの \di コマンドを使ってインデックスに関する情報も表示してみます。

\di temptbl_id_key

一時テーブルの使い方(4)

作成されたインデックスも pg_temp_3 スキーマの中に作成されていました。

一時テーブルであっても通常のテーブルとほぼ同じように使用することができます。例としてデータを追加し、そのデータを取得してみました。

insert into temptbl values (1, 'Apple');

一時テーブルの使い方(5)

-- --

それではいったん mydb データベースとの接続を切断したあと、あらためて mydb データベースへ接続してください。

一時テーブルの使い方(6)

\dt コマンドを使って temptbl テーブルに関して確認してみると temptbl テーブルは削除されており見つかりませんでしたと表示されます。

\dt temptbl

一時テーブルの使い方(7)

このように一時テーブルとして作成したテーブルは、セッションが一度切れると自動的に削除されます。

-- --

一時テーブルの作成と使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。