方法2:transaction-time列が派生期間の場合、 新しいテーブルにINSERT ... SELECTする - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/kit1592007446534.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1186
Product Category
Software
Teradata Vantage
この方法の要件:
  • 実行者にデータベースのNONTEMPORAL権限があり、データベースがこの権限を認識するように有効化されていること。NONTEMPORAL権限の詳細については、Teradata Vantage™ - テンポラル テーブル サポート、B035-1182を参照してください。
  • transaction-timeの開始または終了境界値でtransaction-timeテーブルが行パーティション化されている場合は使用できません。
  1. transaction-timeテーブルのすべての制約をメモします。
  2. transaction-timeテーブルからすべての制約を削除します。
  3. NONTEMPORAL ALTER TABLEを使用して、既存のtransaction-time列を削除します。WITHOUT DELETEオプションを使用して、履歴クローズ行を保持します。保持しないと、transaction-time列を削除したときに、これらの行も自動的に削除されます。
    ALTER TABLE  transaction_time_table_name
      DROP  transaction_time_column WITHOUT DELETE
  4. ALTER TABLEを使用して、SYSTEM_TIME派生期間列を作成し、同じALTER TABLE文の設定済みのsys_start列とsys_end列に属性を追加します。
    ALTER TABLE  new_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;
  5. SYSTEM VERSIONINGを追加して、新しいテーブルをANSI system-timeテンポラル テーブルにします。
    ALTER TABLE  new_table_name
      ADD SYSTEM VERSIONING;
  6. ステップ2で削除したすべての制約を再作成します。ANSIの制約はNONSEQUENCED制約として動作することに留意してください。