【ORACLE】一時テーブルを作成するSQL


ここではORACLEデータベースで、一時テーブルを作成するSQLを紹介しています。

テーブルの作成や一覧で確認する方法は↓で紹介しています。
>>【ORACLE】テーブルを作成・変更・削除するSQL
>>【ORACLE】テーブルの一覧やサイズを確認するSQL

一時テーブルとは

一時テーブルとは、セッションやトランザクションが終了されたときにテーブル内のデータが削除される表です。

主に、1つのプログラムの処理の途中で、データを一時的に作成したいときなど、ワークテーブルとして使います。

一時テーブルに格納したデータは、格納したセッションでのみ参照可能です。他のセッションからは参照できません。

一時テーブルを作成するSQL

一時テーブルの作成はCREATE GLOBAL TEMPORARY TABLE文を使います。

一時テーブルの作成にはCREATE TABLE、CREATE ANY TABLE権限が必要です。

システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL

CREATE GLOBAL TEMPORARY TABLE文

CREATE GLOBAL TEMPORARY TABLE テーブル名(
    列名 データの型 [列の制約]
    [,列名 データの型 [列の制約]]
)
[ON COMMIT DELETE ROWS | ON COMMIT PRESERVE ROWS]
;

・[ON COMMIT DELETE ROWS]
 トランザクションが終了したとき、テーブル内のレコードを削除します。

・[ON COMMIT PRESERVE ROWS]
 セッションが終了したとき、テーブル内のレコードを削除します。

レコードの削除はDELETEではなくTRUNCATEが実行されます。

CREATE GLOBAL TEMPORARY TABLE文のサンプル

次のSQLでは、TAB1という一時テーブルをON COMMIT DELETE ROWSオプションを指定して作成しています。

CREATE GLOBAL TEMPORARY TABLE tab1(
    col1 VARCHAR2(10)
    ,col2 NUMBER
)
ON COMMIT DELETE ROWS
;

まとめ

一時テーブルは、セッションまたはトランザクションが終了したときにデータが削除されるワークテーブルのことです。

一時テーブルはCREATE GLOBAL TEMPORARY TABLE文で作成することが出来ます。

一時テーブルの作成にはCREATE TABLE、CREATE ANY TABLE権限が必要です。

システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL