Contents
一時表
一時表とは、名前の通り「データを一時的に預かってくれる表」のことを指します。
セッションやトランザクションを終了するとデータを削除してくれるので、構文を試したいときなどに使用します。
自分が使用した例としては同じ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;