方法3:transaction-time列がPeriodデータ型の場合、新しいテーブルにINSERT ... SELECTする - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/glb1530826328552.ditamap
dita:ditavalPath
ja-JP/glb1530826328552.ditaval
dita:id
B035-1186
Product Category
Software
Teradata Vantage

この方法の要件:

  • NONTEMPORAL権限は不要です。
  • transaction-time期間の開始または終了境界値でtransaction-timeテーブルが行パーティション化されている場合に使用できます。
  1. 既存のテーブルのnon-transaction-time列に一致する列を持つ新しいテーブルを作成します。ANSI system-time派生期間列の開始および終了境界値を保持する新しいTIMESTAMP(6) WITH TIME ZONE列を2つ追加します。この手順の目的上、列の名前はsys_startとsys_endにします。
  2. NONSEQUENCED INSERT ... SELECTを使用して、transaction-timeテーブルの行を新しいテーブルにコピーします。
  3. 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;
  4. transaction-timeテーブルの制約をメモします。
  5. transaction-timeテーブルを削除します。
  6. 新しいテーブルの名前を古いテーブルの名前に変更します。
  7. SYSTEM VERSIONINGを追加して、新しいテーブルをANSI system-timeテンポラル テーブルにします。
    ALTER TABLE  new_table_name  
 ADD SYSTEM VERSIONING;
  8. ステップ2で削除したすべての制約を再作成します。ANSIの制約はNONSEQUENCED制約として動作することに留意してください。