新しいvalid-time列にデフォルト値を指定すると、その列には指定した値が設定されます。それ以外の場合には、次に示す値が新しい列に設定されます。
valid-time列のデータ型 | 列に設定される値 |
---|---|
PERIOD(DATE)データ型 | PERIOD(TEMPORAL_DATE, UNTIL_CHANGED). |
PERIOD(TIMESTAMP)データ型 | PERIOD(TEMPORAL_TIMESTAMP, UNTIL_CHANGED). 精度とタイムゾーンの値は、新しい列のデータ型に応じて設定されます。 |
ALTER TABLEを使用して既存のテーブルにvalid-time列を追加するときには、CREATE TABLE/CREATE TABLE...AS (テンポラル形式)に明記したvalid-time列を指定するためのルールに加えて、次に示すルールが適用されます。
- テーブルにtransaction-time列が含まれている場合には、ALTER TABLE文にNONTEMPORAL接頭辞を指定する必要があります。これには、テーブルに対するNONTEMPORAL権限が必要になります。
- テーブルにUPIを含めることはできません。
- その場合、最初にALTER TABLEtable_nameMODIFY NOT UNIQUEを使用します。これは、PIを非固有に変更するためのもので、SQLデータ定義言語で説明されています。
- テーブルがNUPIを持つことが可能ですが、プライマリ インデックスを持たないことも可能です。
- 既存のCHECK制約は、valid-time次元のCURRENT制約になります。その他のタイプの制約が存在すると、エラーが報告されます。テンポラル テーブルに対する制約の使用を参照してください。
- テーブルをvalid-timeテーブルにする前に、そのテーブルに定義されたすべての結合インデックスを削除する必要があります。
- テーブルは既存のトリガーの対象テーブルであってはなりません。
- テーブルを参照している既存のビュー、マクロ、またはトリガーされるアクション文で、valid-time修飾子を指定していない文は、valid-time修飾子を追加するための変更が必要です。
実行中のストアド プロシージャに変更対象のテーブルを参照するSQL文が含まれていて、そのSQLで明示的な修飾子が指定されていない場合には、コンパイル時の修飾子がSQLに適用されます。
テーブルが空の場合を除き、追加したvalid-time列でパーティション化するようにテーブルのパーティションを変更することはできません。