16.20 - 方法1:既存のtransaction-timeテーブルを変更する - Teradata Vantage NewSQL Engine

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

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1186-162K-JPN
この方法の要件:
  • 実行者にデータベースのNONTEMPORAL権限があり、データベースがこの権限を認識するように有効化されていること。NONTEMPORAL権限については、<Teradata Vantage™ テンポラル テーブル サポート、B035-1182>をご覧ください。
  • transaction-timeの開始または終了境界値でtransaction-timeテーブルが行パーティション化されている場合は使用できません。
  • 列パーティション化された大きいテーブルの場合、ステップ4の更新操作で大量のリソースと時間が消費されるため、この方法は推奨されません。
  1. transaction-timeテーブルのすべての制約をメモします。
  2. transaction-timeテーブルからすべての制約を削除します。
  3. NONTEMPORAL ALTER TABLEを使用して、TIMESTAMP(6) WITH TIME ZONEタイプの新しい列を2つ追加します。この手順の目的上、列の名前はsys_startとsys_endにします。これらは、新しいSYSTEM_TIME派生期間列の開始と終了境界値を保持します。
  4. NONTEMPORAL UPDATEを使用して、既存のtransaction-time列またはtransaction-time派生期間列の値を新しい列に入力します。
  5. NONTEMPORAL ALTER TABLEを使用して、既存のtransaction-time列を削除します。WITHOUT DELETEオプションを使用して、履歴クローズ行を保持します。保持しないと、transaction-time列を削除したときに、これらの行も自動的に削除されます。
    ALTER TABLE  transaction_time_table_name  
      DROP  transaction_time_column  WITHOUT DELETE
  6. ALTER TABLEを使用して、SYSTEM_TIME派生期間列を作成し、同じALTER TABLE文の設定済みのsys_start列とsys_end列に属性を追加します。
    ALTER TABLE  transaction_time_table_name
     ADD PERIOD FOR SYSTEM_TIME(sys_start,sys_end) 
     ADD sys_start TIMESTAMP(6) WITH TIME ZONE NOT NULL 
       GENERATED ALWAYS AS ROW START 
     add sys_end TIMESTAMP(6) WITH TIME ZONE NOT NULL 
       GENERATED ALWAYS AS ROW END;
  7. SYSTEM VERSIONINGを追加して、新しいテーブルをANSI system-timeテンポラル テーブルにします。
    ALTER TABLE  transaction_time_table_name  
     ADD SYSTEM VERSIONING;
  8. ステップ2で削除したすべての制約を再作成します。ANSIの制約はNONSEQUENCED制約として動作することに留意してください。