16.20 - Current挿入 - Teradata Vantage NewSQL Engine

Teradata Vantage™ テンポラル テーブル サポート

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1182-162K-JPN

INSERT文またはINSERT ... SELECT文がテンポラル テーブルに実行され、文にCURRENT VALIDTIME修飾子が指定されているか、またはテンポラル修飾子が指定されていない場合、挿入はcurrent挿入になります。

valid-time列を含むテーブルにcurrent挿入を実行するときには、常に、valid-time列の値を明示的に指定する必要があります。valid-time期間は、valid-time列のタイプに応じて、TEMPORAL_TIMESTEMPまたはTEMPORAL_DATEと重なる必要があります。

次に示す情報は、current挿入に適用されます。

  • current挿入の列値の指定には、位置割り当てリストを使用してはいけません。

    INSERT文で位置割り当てリストを使用しても、そのリストにvalid-time列の値を含めることはできません。値を列にマッピングするときにvalid-time列の位置はスキップされるので、この列には常にシステム定義のデフォルト値が設定されます。

    valid-time列のシステム定義のデフォルト値は、その列のPERIODデータ型に応じて、(TEMPORAL_TIMESTAMPからUNTIL_CHANGED)および(TEMPORAL_DATEからUNTIL_CHANGED)になります。

    INSERT … SELECT文で位置割り当てリストを使用する場合、ソース テーブルのvalid-time列とtransaction-time列の値はターゲット テーブルにコピーされずにシステム定義のデフォルト値で置き換えられます。これは、SELECT文内でSELECT *を指定している文や、明示的にvalid-time列とtransaction-time列を射影している文でも同じです。

  • INSERT文では、名前指定リストまたは割り当てリストを使用すると、そのリストでvalid-time列の値を指定できます。名前指定リストまたは割り当てリストでvalid-time列を指定していない場合には、valid-time値にシステム定義のデフォルト値が設定されます。

    INSERT ... SELECT文で名前指定リストを使用し、名前指定リストにvalid-time列が指定されている場合、ターゲット テーブルにvalid-time列値またはPERIOD列値をコピーできます。SELECT *アスタリスク表記法をテンポラル列の明示的な指定と組み合わせて使用する場合には、table_name.*表記法を使用してください。詳細については、選択リストのアスタリスクを参照してください。

    CURRENT VALIDTIME INSERTがvalid-time列の値を指定している場合、期間は現在の時間に重ねる必要があります。valid-timeの履歴行または将来行をテーブルに挿入するには、INSERT文にSEQUENCED VALIDTIME修飾子を使用します。
  • NONTEMPORAL修飾子を使用する場合を除き、transaction-time列に値を指定することはできません。この列はシステムによって自動的に保守されます。current挿入では、transaction-time列に対するシステム定義のデフォルト値が(TT_TIMESTAMPからUNTIL_CLOSED)になります。TT_TIMESTAMPは、タイムスタンプ設定時に各AMPがシステム クロックから読み取ったタイムスタンプ値になります。transaction-time列の位置は、挿入された値を列にマッピングする際に常にスキップされます。
  • INSERT … SELECTのSELECT文はCURRENT SELECTとして実行されます。CURRENT SELECTの結果行は、有効期間が(TEMPORAL_DATEからUNTIL_CHANGED)または(TEMPORAL_TIMESTAMPからUNTIL_CHANGED)に設定されてターゲット テーブルに挿入されます。