CURRENT TEMPORAL SYSTEM_TIME 特殊レジスター

CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターは、システム期間テンポラル表への参照のためのデフォルトの SYSTEM_TIME 期間指定で使用される TIMESTAMP(12) 値を指定します。

システム期間テンポラル表が参照され、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターで有効な値が、NULL 以外の値である CTSTによって表される場合、以下の期間指定が暗黙的に行われます。
FOR SYSTEM_TIME AS OF CTST

ユーザー定義の関数またはプロシージャー内の特殊レジスターの初期値は、 呼び出し側アプリケーションから継承されます。 その他のコンテキストでは、特殊レジスターの初期値は NULL 値です。

SET CURRENT TEMPORAL SYSTEM_TIME ステートメントを実行することにより、この特殊レジスターの値を変更できます。

CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの設定は、以下のコンパイル済み SQL オブジェクトに影響を及ぼします (これらが SYSTIMESENSITIVE バインド・オプションを YES に設定してバインドされている場合)。
  • SQL プロシージャー
  • コンパイル済み関数
  • コンパイル済みトリガー
  • コンパウンド SQL (コンパイル済み) ステートメント
  • 外部 UDF
SYSTIMESENSITIVE バインド・オプションの設定は、パッケージ内の静的 SQL ステートメントと動的 SQL ステートメントでのシステム期間テンポラル表への参照が CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値の影響を受けるかどうかを決定します。 このバインド・オプションは YES または NO に設定できます。

以下の例では、表 IN_TRAY がシステム期間テンポラル表であると想定します。

例 1: CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターで指定された日付の時点での IN_TRAY 内のメッセージの状態に基づいて、ユーザー ID と件名をリストします。
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY
CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターが以前は値 CURRENT TIMESTAMP-7 DAYS に設定されていて、現在は NULL 値に設定されているとすると、次のステートメントは同じ結果を戻します。
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY 
    FOR SYSTEM_TIME AS OF CURRENT TEMPORAL SYSTEM_TIME
例 2: CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターで指定された値の前に送信された、IN_TRAY 内のメッセージのユーザー ID と件名行をリストします。
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY
    WHERE RECEIVED < CURRENT TEMPORAL SYSTEM_TIME
CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターが以前は '2011-01-01-00.00.00' に設定されていて、現在は NULL 値に設定されているとすると、次のステートメントは同じ結果を戻します。
SELECT SOURCE, SUBJECT
    FROM IN_TRAY
    FOR SYSTEM_TIME AS OF '2011-01-01-00.00.00'
    WHERE DATE(RECEIVED) < DATE('2011-01-01-00.00.00')