UPDATE構文要素(テンポラル アップサート形式) - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/bud1592002688266.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1182
Product Category
Software
Teradata Vantage
CURRENT VALIDTIME
アップサートがvalid-time次元でcurrentになることを指定します。

CURRENT VALIDTIME修飾子は、valid-time次元で参照先のテーブルの行を対象とするために使用します。transaction-time次元では、オープン行を対象とします。

セッション テンポラル修飾子が設定されていないときに、アップサート文でテンポラル修飾子が省略されると、デフォルトの修飾子がCURRENT VALIDTIMEになります。

トランザクション時間をサポートするテーブルでは、transaction-time次元のテンポラル修飾子はCURRENT TRANSACTIONTIMEになります。

CURRENT DMLを変更すると、並行トランザクションにおける逐次性の問題が発生することがあります。これらの問題を避ける方法の詳細は、CurrentテンポラルDMLに付随する潜在的な同時並行性の問題を参照してください。

VALIDTIME and SEQUENCED VALIDTIME
ターゲット テーブルが有効時間をサポートする場合、アップサートがvalid-time次元でsequencedになることを指定します。

ターゲット テーブルは、valid-time列を含む必要があります。

valid-timeをサポートするターゲット テーブルに対するsequencedアップサートでは、valid time値がperiod_expressionに設定されます。これを省略すると、valid-time列がPERIOD(DATE)の場合には、PERIOD'(0001-01-01, UNTIL_CHANGED)'が設定されます。また、valid-time列がPERIOD(TIMESTAMP)の場合には、PERIOD '(0001-01-01 00:00:00.000000+00:00, UNTIL_CHANGED)'が設定されます。

トランザクション時間をサポートするテーブルでは、transaction-time次元のテンポラル修飾子はCURRENT TRANSACTIONTIMEになります。

period_expression

DML文の適用期間を指定します。

適用期間は、列を参照しないPERIOD定数式である必要がありますが、パラメータ化された値とTEMPORAL_DATEまたはTEMPORAL_TIMESTAMPビルトイン関数を参照できます。

適用期間は、DML文のテンポラル修飾子に関係なく、常に時間次元でnonsequencedである自己格納型の非相関スカラー サブクエリーにすることもできます。

period_expressionが指定されている場合、valid-time列は、問合わせ内の任意の場所で指定したり参照したりすることはできません。valid-time列が派生期間列の場合、問合わせ内の任意の場所でコンポーネント列を指定したり参照したりすることはできません。

period_expressionを省略すると、valid-time列がPERIOD(DATE)の場合には、適用期間のデフォルトにPERIOD'(0001-01-01, UNTIL_CHANGED)'が設定されます。また、valid-time列がPERIOD(TIMESTAMP( n ) WITH TIME ZONE)の場合には、'(0001-01-01 00:00:00.000000+00:00, UNTIL_CHANGED)'に設定されます。ここで、nは精度であり、WITH TIME ZONEは任意です。

NONSEQUENCED VALIDTIME
ターゲット テーブルが有効時間をサポートする場合、アップサートがvalid-time次元でnonsequencedになることを指定します。

ターゲット テーブルは、valid-time列を含む必要があります。

トランザクション時間をサポートするテーブルでは、transaction-time次元のテンポラル修飾子はCURRENT TRANSACTIONTIMEになります。

upsert_statement
既存のUPDATE文(アップサート形式)文の構文を指定します。

詳細は、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

upsert_statement:
  • 有効時間を含むテーブルに対するcurrent更新またはsequenced更新では、更新対象のデータを保持する列の名前として、valid-time列をSET句で参照することはできません。
  • トランザクション時間を含むテーブルに対する更新では、更新対象のデータを保持する列の名前として、transaction-time列をSET句で参照することはできません。
  • SET句では、valid-time列に値を割り当てるために使用する式にCURRENT_DATEまたはCURRENT_TIMESTAMPを使用することはできません。
  • 行パーティション テーブルでは、SET句でパーティション列を参照することはできません。
のUPDATE部分に含まれるSET句には、次の制限が適用されます。