<Teradata Vantage™ - テンポラル テーブル サポート>では、特にテンポラル テーブルに関連する構文について説明します。必須ではない構文やテンポラル テーブルに固有ではない構文は、基本的にこのドキュメントには示されていません。その他の構文については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>、および<Teradata Vantage™ - SQLデータ制御言語、B035-1149>を参照してください。
[NONTEMPORAL] ALTER TABLE [ database_name. | user_name. ] table_name [, alter_table_option ] [,...] [ other_alter_table_option ] [,...] [;]
標準のデータ型、列属性、およびインデックスに関連する変更について、詳細は<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
- other_alter_table_option
{ column_change | table_level_constraint_change | ADD NORMALIZE [ ALL BUT ( ignored_column_list ) ] ON normalize_column [ ON OVERLAPS [ OR MEETS ] ] | DROP NORMALIZE }
- column_change
{ ADD column_name { data_type [ column_attributes ] | column_attributes | column_constraint_attribute | temporal_column } | DROP column_name [IDENTITY] [ WITHOUT DELETE ] | RENAME old_column_name [AS] TO new_column_name | derived_period_column }
- table_level_constraint_change
{ table_level_reference_definition | ADD [ CONSTRAINT name ] [ time_option ] CHECK ( boolean_condition ) | DROP [ CONSTRAINT name ] CHECK | MODIFY [ CONSTRAINT name ] [ time_option ] CHECK ( boolean_condition ) | table_level_unique_definition }
- column_constraint_attribute
[ CONSTRAINT name ] { [ time_option ] { CHECK ( boolean_condition ) | UNIQUE | PRIMARY KEY } | [ RI_time_option ] REFERENCES WITH NO CHECK OPTION table_name [ ( column_name ) ] }
- temporal_column
{ { PERIOD (DATE) | PERIOD ( [ ( precision ) ] [ WITH TIME ZONE ] ) } [ NOT NULL ] [AS] VALIDTIME | PERIOD (TIMESTAMP(6) WITH TIME ZONE) NOT NULL [AS] TRANSACTIONTIME }
- derived_period_column
{ ADD PERIOD FOR derived_column ( begin_column, end_column ) [ [AS] { VALIDTIME | TRANSACTIONTIME } ] | DROP [ PERIOD FOR ] derived_column }
- table_level_reference_definition
{ { ADD [ CONSTRAINT name ] | DROP } [ RI_time_option ] FOREIGN KEY ( column_name [,...] ) REFERENCES WITH NO CHECK OPTION table_name [ ( column_name [,...] ) ] | DROP INCONSISTENT REFERENCES }
- time_option
CURRENT TRANSACTIONTIME [ AND [ CURRENT | SEQUENCED | NONSEQUENCED ] VALIDTIME ]
- table_level_unique_definition
{ DROP CONSTRAINT name | ADD [ CONSTRAINT name ] time_option { UNIQUE | PRIMARY KEY } ( column_name [,...] ) }
- RI_time_option
{ CURRENT | SEQUENCED | NONSEQUENCED } TRANSACTIONTIME [ AND [ CURRENT | SEQUENCED | NONSEQUENCED ] VALIDTIME ] ]
- NONTEMPORAL
- 変更対象のテーブルはトランザクション時間を含み、ALTER TABLE操作は、変更を行なう前の既存の行の履歴スナップショットを保存するのではなく、そのテーブル内のデータを変更します。
- database_name.table_name
- 変更するテーブルの名前と、現行データベースと異なる場合、テーブルが含まれるデータベースまたはユーザーの任意選択の名前。
- user_name.table_name
- table_name
- alter_table_option
- 従来型のALTER TABLE文のAlter Table Optionsリストにあるオプション。
列変更句
- ADD column_name
- 指定された列と、その指定された属性を追加、または変更するために使用されます。
- Data Type Column Attributes
- 列のデータを定義する1つまたは複数のデータ定義句。
- DROP column_name [IDENTITY] [WITHOUT DELETE]
- 指定された列をテーブルから削除します。
列制約属性
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- CONSTRAINT name
- 制約のオプション名。
- CURRENT TRANSACTIONTIME
- トランザクション時間のオープン行に対してのみ、制約違反のチェックが行なわれます。
- SEQUENCED TRANSACTIONTIME
- 子テーブルの制約列の値は、その値が子テーブルに存在する期間中は親テーブルに存在する必要があることを指定します。SEQUENCED TRANSACTIONTIME制約の修飾子は、REFERENCES制約にのみ有効です。
- NONSEQUENCED TRANSACTIONTIME
- 子テーブルの制約列のすべての値は、親テーブルに存在する必要があることを指定します。NONSEQUENCED制約は、非テンポラル関係制約と同様に、子テーブルのtransaction-time列を無視します。親テーブルはtransaction-time列を持つことができません。NONSEQUENCED TRANSACTIONTIME制約の修飾子は、REFERENCES制約にのみ有効です。
- CURRENT VALIDTIME
- 有効時間の現在行および将来行に対してのみ、制約違反のチェックが行なわれることを指定します。履歴行に対するチェックは行なわれません。
- [SEQUENCED] VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれます。
- NONSEQUENCED VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれることを指定します。NONSEQUENCED制約は、valid-time列を非テンポラル列として扱います。そのため、この制約は非テンポラル テーブルに対する制約と同じになります。これらはテーブルのすべてのオープン行に適用されます。
- CHECK (boolean_condition)
- ブール条件式が真になるように指定します。条件式が偽の場合、行はチェック制約違反になります。
- UNIQUE
- PRIMARY KEY
- 対象期間中はあらゆる時点でどの制約列内のどの値も1つの行内にしか存在できないことを指定します。
- REFERENCES table_name [(column_name)]
- プライマリキーと外部キー(または固有)の参照整合性制約。table_nameは親テーブルです。
- WITH NO CHECK OPTION
- 指定したプライマリキーと外部キーの関係に参照整合性を強制しません。
テンポラル列定義
- [AS] VALIDTIME
- 追加される列はvalid-time列になります。
- [AS] TRANSACTIONTIME
- 追加される列はtransaction-time列になります。
派生PERIOD列の変更
- derived_column
- 派生PERIOD列の名前。
- (begin_column,end_column)
- 派生PERIOD列の開始境界値と終了境界値として使用するDateTime列の名前を指定します。列のデータ型は同じにする必要があり、どちらもNOT NULLとして定義されている必要があります。
- [AS] VALIDTIME [AS] TRANSACTIONTIME
- 派生PERIOD列がテンポラル テーブルのvalid-time列またはtransaction-time列として使用できることを指定します。派生PERIOD列の開始列と終了列は、派生PERIOD列をvalid-time列またはtransaction-time列として使用する場合、プライマリ インデックスに含めることはできません。
制約変更のオプション
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- ADD DROP ADD/DROP CONSTRAINT name
- 制約を追加または削除するために使用されます。
テーブル レベルのREFERENCES定義
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- CONSTRAINT name
- 制約のオプション名。
- CURRENT TRANSACTIONTIME
- 子テーブルの制約列のすべての値は、親テーブルのオープン行に存在している必要があります。
- SEQUENCED TRANSACTIONTIME
- 子テーブルの制約列の値は、その値が子テーブルに存在する期間中は親テーブルに存在する必要があります。
- NONSEQUENCED TRANSACTIONTIME
- 子テーブルの制約列のすべての値は、親テーブルに存在する必要があることを指定します。NONSEQUENCED制約は、非テンポラル関係制約と同様に、子テーブルのtransaction-time列を無視します。親テーブルはtransaction-time列を持つことができません。
- CURRENT VALIDTIME
- 子テーブルの制約列のすべての値は、親テーブルのオープン現在行またはオープン将来行に存在している必要があることを指定します。子行のvalid-time期間は、子テーブルと一致する値を保持する親テーブルの現在行と将来行のvalid-time期間を組み合わせた範囲内に収まる必要があります。子テーブルの履歴行はチェックされず、親テーブルの履歴行は無視されます。
- [SEQUENCED] VALIDTIME
- 子テーブルの制約列のすべての値は、親テーブルのオープン行に存在している必要があることを指定します。子行のvalid-time期間は、子テーブルと一致する値を保持する親テーブルのオープン行のvalid-time期間を組み合わせた範囲内に収まる必要があります。
- NONSEQUENCED VALIDTIME
- 子テーブルの制約列のすべての値は、親テーブルに存在する必要があることを指定します。NONSEQUENCED制約は、非テンポラル関係制約と同様に、子テーブルのvalid-time列を無視します。親テーブルはvalid-time列を持つことができません。
- FOREIGN KEY
- テーブルの外部キー。
- column_name
- 外部キーの一部として定義された列の名前。
- REFERENCES WITH NO CHECK OPTION
- table_nameで指定した名前の親テーブルへの整合性参照。
- table_name
- 参照整合性制約の定義に使用する、参照先の親テーブルの名前。
- column_name
- 親テーブルのPRIMARY KEYまたはUNIQUE候補キー列で構成される列セット内の列を指定します。この列をvalid-time列またはtransaction-time列にすることはできません。
- DROP INCONSISTENT REFERENCES
- テーブルに定義されている矛盾したすべての参照を削除します。
テーブル レベルのCHECK定義
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- CONSTRAINT name
- 制約のオプション名。
Transactiontimeオプションとvalidtimeオプションを一緒に使用する場合、任意の順序で指定し、ANDで区切ることができます。
- CURRENT TRANSACTIONTIME
- トランザクション時間のオープン行に対してのみ、制約違反のチェックが行なわれます。
- CURRENT VALIDTIME
- 有効時間の現在行および将来行に対してのみ、制約違反のチェックが行なわれることを指定します。履歴行に対するチェックは行なわれません。
- [SEQUENCED] VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれます。
- NONSEQUENCED VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれることを指定します。NONSEQUENCED制約は、valid-time列を非テンポラル列として扱います。そのため、この制約は非テンポラル テーブルに対する制約と同じになります。これらはテーブルのすべてのオープン行に適用されます。
- CHECK (boolean_condition)
- ブール条件式が真になるように指定します。条件式が偽の場合、行はチェック制約違反になります。
テーブル レベルのUNIQUE定義
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- CONSTRAINT name
- 制約のオプション名。
Transactiontimeオプションとvalidtimeオプションを一緒に使用する場合、任意の順序で指定し、ANDで区切ることができます。
- CURRENT TRANSACTIONTIME
- トランザクション時間のオープン行に対してのみ、制約違反のチェックが行なわれます。
- CURRENT VALIDTIME
- 有効時間の現在行および将来行に対してのみ、制約違反のチェックが行なわれることを指定します。履歴行に対するチェックは行なわれません。
- [SEQUENCED] VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれます。
- NONSEQUENCED VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれることを指定します。NONSEQUENCED制約は、valid-time列を非テンポラル列として扱います。そのため、この制約は非テンポラル テーブルに対する制約と同じになります。これらはテーブルのすべてのオープン行に適用されます。
- UNIQUE
- PRIMARY KEY
- 対象期間中はあらゆる時点でどの制約列内のどの値も1つの行内にしか存在できないことを指定します。
- column_name
- プライマリ キーまたは固有列として使用する列セット内の列を指定します。この列をvalid-time列またはtransaction-time列にすることはできません。
テーブル レベルのNORMALIZE定義
NORMALIZEオプションについて、詳細はTeradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144を参照してください。
- NORMALIZE
- 行は指定されたPERIOD列に基づいて組み合わせされることを指定します。組み合わせされる行のその他のすべての列の値は、同じでなければなりません。組み合わせされる行のPERIOD列の値は重なるか一致する必要があり、組み合わせ行の期間の集合である単一の期間にまとめられます。
- ALL BUT (ignored_column_list)
- 正規化の目的で無視される列名または列名のカンマ区切りリストを指定します。テーブルの行が挿入または更新される場合、結果の無視された列の値は非確定的です。これらの値は、最近テーブルに追加された行からの値を反映しますが、正確な値を予測することはできず、必ず再現できるわけではありません。トランザクション時間を持つテンポラル テーブルを正規化することはできますが、transaction-time列の値は固有であることがほとんどです。このため、transaction-time列がignored_column_listに含まれる場合を除き、テーブルのほとんどの行は正規化の対象となりません。
- ON normalize_column
- 正規化されるPERIOD列または派生PERIOD列を指定します。これはtransaction-time列にすることはできませんが、valid-time列またはその他のPERIOD列にすることはできます。正規化がトランザクション時間を持つテーブルで実行される場合、オープン行のみが正規化の対象となります。
- ON OVERLAPS
- 正規化の条件として、結合する行の期間値が重なっている必要があることを指定します。ON OVERLAPS OR MEETSが、NORMALIZEのデフォルトです。
- OR MEETS
- 正規化の条件として、結合する行の期間値が一致している必要があることを指定します。ON OVERLAPS OR MEETSが、NORMALIZEのデフォルトです。