12.22.1 一時表のデータ有効期間
実体化された一時表のデータ有効期間(実体が存在する期間)は,その一時表がトランザクション固有一時表か,SQLセッション固有一時表かによって異なります。一時表のデータ有効期間の開始及び終了タイミングを次の表に,データ有効期間とある時点で保持されているデータの例を次の図に示します。
一時表の種類 |
開始となるタイミング |
終了となるタイミング |
---|---|---|
トランザクション固有一時表 |
トランザクション中で,一時表に対して最初にINSERT文が実行されたとき |
トランザクションが決着したとき |
SQLセッション固有一時表 |
SQLセッション中で,一時表に対して最初にINSERT文が実行されたとき |
|
|
- 〔説明〕
-
時刻Tの時点で,SQLセッション1及び2が使用する一時表TMP1及びTMP2に保持されているデータを次に示します。
SQLセッション
一時表
保持されているデータ
SQLセッション1
TMP1
4.で挿入したデータ。
TMP2
1.及び3.で挿入したデータ。
SQLセッション2
TMP1
この時点では,データはありません。
TMP2
1.及び3.で挿入したデータ。
図12‒48 一時表のデータ有効期間と,ある時点で保持されているデータの例(その2) - 〔説明〕
-
時刻T1及びT2の時点で,SQLセッション1及び2が使用する一時表TMP2に保持されているデータを次に示します。
時刻
SQLセッション
保持されているデータ
T1
SQLセッション1
2.で表のデータを削除しているため,この時点では,データはありません。ただし,TMP2の実体は存在します。
SQLセッション2
1.で挿入したデータ。
T2
SQLセッション1
3.及び4.で挿入したデータ。
SQLセッション2
この時点では,データはありません。TMP2を実体化する前の同期点までロールバックしているため,TMP2の実体は存在しません。
- 注意事項
-
-
一時表のデータ有効期間外に,一時表に対して検索,更新,及び削除を実行しても,データがない表に対してSQLを実行したときと同じ結果になります。
-
HiRDB/パラレルサーバで,SQLセッション固有一時表を実体化したバックエンドサーバ又はそのバックエンドサーバがあるユニットが異常終了したり,系切り替えが発生したりすると,データ有効期間が終了します。そのため,SQLセッションが終了するまで,該当する一時表に対するデータ操作はSQLエラーになります。
-