@634

Oracle - 一時表を作成する

Advertisement

一時表の利用。

Oracleでは、一時表を利用することができる。一時表はワーク用の表のことで、トランザクション終了時、もしくはセッションの終了時までレコードを保持するが、最終的にレコードは自動的に削除される。

書式
create global temporary table [表名]
 [on commit delete rows|on commit preserve rows]

on commit delete rows
トランザクション終了時にデータを削除する

on commit preserve rows
セッション終了時にデータを削除する

例:一時表の作成

SQL> create global temporary table test_temp(
 col1 number,
 col2 number)
 on commit delete rows;
表が作成されました。

SQL> insert into test_temp values(10, 10);
1行が作成されました。

SQL> insert into test_temp values(20, 20);
1行が作成されました。

SQL> select * from test_temp;
      COL1       COL2
---------- ----------
        10         10
        20         20

SQL> commit;
コミットが完了しました。

SQL> select * from test_temp;
レコードが選択されませんでした。

SQL> drop table test_temp;
表が切り捨てられました。

SQL> create global temporary table test_temp(
 col1 number,
 col2 number
 )on commit preserve rows;
表が作成されました。

SQL> insert into test_temp values(10, 10);
1行が作成されました。

SQL> insert into test_temp values(20, 20);
1行が作成されました。

SQL> commit;
コミットが完了しました。

SQL> select * from test_temp;
      COL1       COL2
---------- ----------
         1          1
         2          2

SQL> disconnect
Oracle9i Enterprise Edition Release 9.0.1.3.1 - Production
JServer Release 9.0.1.3.0 - Productionとの接続が切断されました。

SQL> connect db01/db01
接続されました。

SQL> select * from test_temp;
レコードが選択されませんでした。
on commit delete rows で作成した一時表は commit の時点でレコードが削除されている。一方 on commit preserve rows で作成した一時表はセッション中はデータを維持しているが、セッションが終了するとレコードが削除されている。

Advertisement

ショートカット

634トップページ
このカテゴリのトップページに戻る
634ラボ
   UIコレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール