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更新では、適用期間でカバーされるそれぞれの時点で指定した行を変更します。つまり、有効期間が適用期間と重なる行は、重なる部分に対して変更が行なわれるということです。

sequenced更新では、UPDATE文に指定する選択の期間(適用期間)に応じて、valid-time次元の現在行、履歴行または将来行を変更できます。transaction-time次元が含まれる二重テンポラル テーブルでは、トランザクション時間でオープンの行のみがsequenced更新の対象とできます。

SET句で変更される列が行の値を変更しない場合は、その行がテンポラル更新のセマンティクスで変更されることはありません。更新のアクティビティ カウントには、その行が含まれます。また、更新トリガーではそのような行を対象としますが、変更のセマンティクス(行のクローズ、オープン、または新しい行の作成)は実行されません。

sequenced更新の適用期間と重なる有効期間を持つオープン行のみが、更新の候補になります。必要に応じて、valid-time列とtransaction-time列の値に追加の修飾子を設定して、更新の対象になる行をさらにフィルタに掛けることができます。

valid-timeテーブルの行に対するsequenced更新では、行の有効期間と更新の適用期間とのリレーションシップに応じて、古い行の変更と、場合によっては新しい行の挿入が発生します。

二重テンポラル テーブルの行に対するsequenced更新では、最初に古い行がトランザクション時間でクローズされます。その行のコピーが作成され、トランザクション時間でオープンされ、該当する更新の構文で変更が実行されます。このような変更は、行の有効期間と更新文で指定した適用期間とのリレーションシップに応じて、単純に行を更新することになったり、行を2つまたは3つの行に分割することになったりします。

次に示すテーブルでは、有効時間を含むテーブルでのsequenced更新操作について説明しています。

更新の適用期間 THEN …
行の有効期間内に含まれる 行は更新の対象となります。ただし、有効期間が更新の適用期間と重なる部分の期間に限られます。
行の値が更新される期間は元の行の有効期間の一部になるため、元の行の値は更新の適用期間の前後で有効のままになります。そのため、更新操作の結果として3つの行が発生します。
  • 更新の対象となった元の行は、更新の適用期間の開始時に有効時間の期間が終了するように変更されます。
  • 更新された値を含む新しい行が挿入されます。この行の有効時間の期間には、更新の適用期間全体が反映されます。
  • 更新の対象となった元の行と同じ値を含む新し行が挿入されます。ただし、valid-time期間は更新の適用期間後の残りの部分になる元の行のvalid-time期間の一部を反映するように設定されます。このvalid-time期間は、更新の適用期間の終了時に開始し、元の行のvalid-time期間が終了した時点で終了します。
適用期間の開始境界値が、有効期間の開始境界値と終了境界値の間になるように、有効期間と重なる 更新の結果として、1つの新しい行と1つの古い既存の行が発生します。
  • 新しい行に更新された列が格納されます。この行の有効期間には、適用期間と有効期間の共通部分が設定されます。
  • 既存の行の有効期間には、適用期間の開始前に存在する部分の有効期間が設定されます。
適用期間の終了境界値が、有効期間の開始境界値と終了境界値の間になるように、有効期間と重なる 更新の結果として、1つの新しい行と1つの古い既存の行が発生します。
  • 新しい行に更新された列が格納されます。この行の有効期間には、適用期間と有効期間の共通部分が設定されます。
  • 古い既存の行の有効期間には、適用期間の終了後に存在する部分の有効期間が設定されます。
有効期間を含む(適用期間と有効期間が等しい場合も含む) 指定した列の既存の行が更新されます。有効期間に変更はありません。

更新対象のテーブルに定義されたテンポラル制約は、変更された既存の行と、新しく挿入された行の両方に適用されます。