16.20 - 例: Valid-Timeテーブルの行の更新 - Teradata Vantage NewSQL Engine

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

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

保険の顧客が、2007年2月3日に開始される標準的な住宅所有者ポリシーを持っており、ポリシーの保有者が変更を要求しない限り有効で自動的に更新されるとします。顧客のポリシーの有効期間(Policy_Term列内)を含む完全な情報は、次の問合わせによって表示されます。

NONSEQUENCED VALIDTIME SELECT * FROM Policy WHERE Policy_ID=540944;
 Policy_ID  Customer_ID  Policy_Type  Policy_Details        Policy_Term
----------  -----------  -----------  --------------------  ------------------------
    540944    123344567  HM           STD-PL-332-YXY-01     ('07/02/03', '99/12/31')

次に、顧客が1年後にポリシーを上級の住宅所有者ポリシーにアップグレードするよう要求したとします。更新文は、変更の適用期間を指定し、変更日の2008年2月3日から顧客がポリシーの変更またはキャンセルをさらに要求するまで、やはり無期限に継続されます。次の文は、顧客のポリシーに対して必要とされる更新を実施します。

SEQUENCED VALIDTIME PERIOD '((2008-02-03, UNTIL_CHANGED)'
UPDATE POLICY SET Policy_Type='HP'
WHERE Policy_ID=540944;

このPolicy_IDに対する結果は、テーブルの次の2つの行になります。

  • 初期ポリシーを表示する履歴行。変更が加えられた日付に対応する終了日をPolicy_Term列(valid-time列)に持ちます。
  • 現在のポリシーを反映する行。変更が加えられた日付で始まる有効時間を持ちます。
    NONSEQUENCED VALIDTIME SELECT * FROM Policy where Policy_ID=540944;
    
      Policy_ID  Customer_ID  Policy_Type  Policy_Details      Policy_Term
    -----------  -----------  -----------  ------------------- ------------------------
         540944    123344567  HP           STD-PL-332-YXY-01   ('08/02/03', '99/12/31')
         540944    123344567  HM           STD-PL-332-YXY-01   ('07/02/03', '08/02/03')

非テンポラル テーブルでは、非テンポラル セマンティクスを使用し、行のPolicy_Type列の値が単に置き換えられるだけであり、変更前にポリシーがどのように存在していたかを表示する履歴行はテーブルに残されません。