🙄

【Silver DBA】一時表

2024/03/15に公開

一時表

データを一時的に保管するための表。
一時表にINSERTしたデータはそのセッションからのみ参照できる。
使用終了後は自動的に削除される。

一般の表と同じように、索引の作成、TRUNCATEの実行などができる。

一般の表との違いは以下の通り
・一時表領域に格納される
・常に遅延セグメント
・TRUNCATEを除くDDLは、一時表を使用していない時のみ実行できる

グローバル一時表

定義情報はデータディクショナリに永続化される。
表の定義はデータベース全体で共通。

構文
CREATE GLOBAL TEMPORARY TABLE 表名
列名 データ型, ...
ON COMMIT {DELETE | PRESERVE} ROWS;

[ON COMMIT DELETE ROWS]
トランザクション終了時に自動的にデータを削除する。

[ON COMMIT PRESERVE ROWS]
セッション終了時に自動的にデータを削除する。

プライベート一時表

定義情報は永続化されない。
使用終了後に削除されるので、使用のたびに作成が必要。
表の定義はセッションごとに独立。
そのため、異なる定義の同じ名前のプライベート一時表を作成できる。

表名は「ORA$PTT_」から始める必要がある
(PRIVATE_TEMP_TABLE_PREFIX初期化パラメータで変更可能)

構文
CREATE PRIVATE TEMPORARY TABLE 表名
列名 データ型, ...
ON COMMIT {DROP | PRESERVE} DEFENITION;

[ON COMMIT DROP DEFENITION]
トランザクション終了時に自動的に表定義・データを削除する。

[ON COMMIT PRESERVE DEFENITION]
セッション終了時に自動的に表定義・データを削除する。

Discussion