🙄
【Silver DBA】一時表
一時表
データを一時的に保管するための表。
一時表に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