【Silver SQL試験対策】一時表の使い道や作成方法のまとめ

B!

一時表

一時表とは、名前の通り「データを一時的に預かってくれる表」のことを指します。

セッションやトランザクションを終了するとデータを削除してくれるので、構文を試したいときなどに使用します。

自分が使用した例としては同じDB内でデータ移行を行ったときに正しいデータ移行を行えているかについて確認するときに使用しました。

--時表TESTテーブルからデータ移行
CREATE GROBAL TEMPORARY TABLE TEST AS SELECT * FROM HOGE;
CREATE GROBAL TEMPORARY TABLE FUGA AS SELECT * FROM HOGE WHERE 1=2;

--データ移行
INSERT INTO FUGA
SELECT * FROM HOGE;

GROBAL一時表とPRIVATE一時表

どちらも一時表であることに変わりはないのですが、下記の違いがあります。

共通部分 ・セッション、トランザクション終了時にデータが削除
・自分のセッション以外からは一時表を参照できない
・セッションごとに一時表は独立
GROBAL ・セッション、トランザクション終了後もテーブルの定義が残る。(データディクショナリに保存されるため)
・テーブル定義はデータベース内に残る。(いつでも再利用可能)
・テーブル定義はDROP TABLEで削除。(通常のテーブル削除と一緒)
PRIVATE ・セッション、トランザクション終了時にデータと共にテーブル定義も削除。
・定義情報も削除されるので、隠れて色々なことが試せる。
テーブル作成時には「ORA$PTT_」を付ける。(設定で切替可能)

作成方法

--GROBAL一時表
CREATE GROBAL TABLE AAA(
型情報
)
オプション情報

--*オプション*
--セッション終了時に自動削除
ON COMMIT PRESERVE ROWS

--トランザクション終了時に自動削除
ON COMMIT DELETE ROWS
--PRIVATE一時表
CREATE PRIVATE TEMPORARY TABLE ORA$PTT_BBB(
型情報
)
オプション情報

--*オプション*
--セッション終了時に自動削除
ON COMMIT PRESERVE DEFINITION
--トランザクション終了時に自動削除
ON COMMIT DROP DEFINITION;
最新の記事はこちらから