16.20 - Sequenced挿入 - Teradata Vantage NewSQL Engine

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

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

sequenced挿入はcurrent挿入と同様のものですが、挿入される行のvalid-timeをユーザーが指定できます。履歴行、現在行または将来行を挿入できます。

INSERT文では、テーブルがトランザクション時間を含んでいるときに、transaction-time列の値を明示的に指定することはできません。トランザクション時間は、システムが保守します。transaction-time列の名前は、SEQUENCED INSERT 文の名前指定リストまたは割り当てリストに指定することはできません。システムは、値を列にマッピングする際に、transaction-time列の位置をスキップします。

valid-time列に指定する期間値は、ターゲット テーブルのvalid-time列に割り当て可能なものにする必要がありますが、NULLにすることはできません。

有効時間を含むターゲット テーブルでは、SELECTを指定しないINSERT文は次のようになります。

  • 位置割り当てリストが指定されているときには、valid-time値はvalid-time列と同じ位置にある値リストから読み込まれます。値が指定されているときには、その値がvalid-time列に割り当てられます。位置割り当てリストにvalid-time列の値が指定されていないときには、その列の値にはvalid-time列のデフォルト値が設定されます。
  • valid-time列の名前を名前指定リストまたは割り当てリストに指定して、値を指定することができます。名前指定リストまたは割り当てリストでvalid-time列を指定していない場合には、valid-time値にシステム定義のデフォルト値が設定されます。
SEQUENCED VALIDTIME INSERTでvalid-time列の値を指定する場合は、期間をNULLにしてはいけません。valid-time列にNULLが入っている行を挿入するには、NONSEQUENCED VALIDTIME INSERT文を使用します。

valid-timeとINSERT … SELECT文を含むターゲット テーブルでは、次のことが必要です。

  • SELECTSubquery では、valid-time列を含むテーブルを参照する必要があります。
  • 選択リストにvalid-time列または値を指定してはいけません。ターゲットが二重テンポラル テーブルの場合は、valid-time列またはtransaction-time列の名前または値を選択リストに指定してはいけません。SELECTリストの値は、ターゲットにvalid-time列とtransaction-time列が存在しないものとして、位置的に対応する列に割り当てられます。
  • SELECT文は、少なくとも1つのテーブルが有効時間を含むテーブルであるときには、SEQUENCED SELECTとして実行されます。SELECTの結果行は、ターゲット テーブルに挿入されます。この行の有効時間の期間は、ソース行の有効期間とSELECT 文の適用期間が重なる部分(P_INTERSECT) が設定されます。結果としての重なった部分のvalid-time値の精度は、ターゲット テーブルのvalid-time期間に割り当て可能になる必要があります。
  • ターゲット テーブルのvalid-time列が派生PERIOD列である場合、挿入される行の開始境界値と終了境界値は、ターゲット テーブルの派生PERIODのvalid-time列の構成要素列に割り当てられます。