- NONTEMPORAL
- (Copy Table構文のCREATE TABLE ASの場合のみ)すべてのtransaction-time値は、ソース テーブルからトランザクション時間を含むターゲット テーブルにコピーされることを指定します。
NONTEMPORAL
ターゲット テーブルにトランザクション時間が含まれていない場合、NONTEMPORAL接頭辞は無視されます。
- MULTISET
- 重複行が許容されることを指定します。テンポラル テーブルは、マルチセット テーブルでなければなりません。
- GLOBAL TEMPORARY
- 一時テーブルの定義が作成され、将来の実体化のためにデータ ディクショナリに格納されます。
- VOLATILE
- 揮発テーブルが作成されることを指定します。その定義は、それが定義されたセッションの間だけメモリ内に保存されます。
- database_name.table_name
- user_name.table_name
- table_name
- 現行データベースと異なる場合、新しいテーブルの名前と、それが格納されるデータベースまたはユーザーの任意選択の名前。
- create_table_option
- 従来型CREATE TABLE文のCreate Table Optionsリストにあるオプションを指定します。
列定義句
- column_name
- 1つ以上の列の名前、この順序でそれらとその属性がテーブルに対して定義されます。
- data_type column_attributes
- 列に格納されるデータの型と属性を定義する、1つ以上のデータ定義句を指定します。
データ型と列属性について、詳細はTeradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144を参照してください。
PERIODデータ型の詳細については、Teradata Vantage™ データ タイプおよびリテラル、B035-1143を参照してください。
列制約属性
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- 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)
- ブール条件式が真になるように指定します。条件式が偽の場合、行はチェック制約違反になります。
チェック制約はvalid-time列またはtransaction-time列には設定できません。
- UNIQUE
- PRIMARY KEY
- 対象期間中はあらゆる時点でどの制約列内のどの値も1つの行内にしか存在できないことを指定します。
- REFERENCES table_name [(column_name)]
- プライマリ キーと外部キー(または固有)の参照整合性制約を指定します。table_nameは親テーブルです。
この列をvalid-time列またはtransaction-time列にすることはできません。
参照制約と共に使用されるテンポラル修飾子の内容は、その他の制約についての内容よりも複雑になります。詳細については、テンポラル参照制約を参照してください。
- WITH NO CHECK OPTION
- 指定したプライマリキーと外部キー(または固有)の関係に参照整合性を強制しません。
テンポラル列定義
- [AS] VALIDTIME
- 追加される列がvalid-time列になることを指定します。
valid-time列は、データ型がPERIOD(DATE)、PERIOD(TIMESTAMP[(n)])、またはPERIOD(TIMESTAMP[(n)] WITH TIME ZONE)の場合のみ追加できます。
テンポラル テーブルには、valid-time列は1つまでしか指定できません。
valid-time列を追加する場合は、既存のテーブルにUPIが含まれていてはいけません。また、固有性制約、プライマリキー制約、または参照整合性制約のいずれも含まれていてはいけません。
- [AS] TRANSACTIONTIME
- 追加される列がtransaction-time列になることを指定します。
transaction-time列には、必ずPERIOD(TIMESTAMP(6) WITH TIME ZONE)のデータ型を含めます。
テンポラル テーブルには、transaction-time列は1つまでしか指定できません。
DEFAULT句を、transaction-time列に指定することはできません。
transaction-time列は、NOT NULLとして定義されなければなりません。
transaction-time列を追加する場合は、既存のテーブルにUPIが含まれていてはいけません。また、固有性制約、プライマリキー制約、または参照整合性制約のいずれも含まれていてはいけません。
派生PERIOD列の定義
- derived_column
- 派生PERIOD列の名前。
- (begin_column,end_column)
- 派生PERIOD列の開始境界値と終了境界値として使用するDateTime列の名前を指定します。列のデータ型は同じにする必要があり、どちらもNOT NULLとして定義されている必要があります。
valid-time列として機能する、派生PERIOD列に対して使用する開始境界列と終了境界列は、DATEまたはTIMESTAMP(n) WITH TIME ZONEのデータ型でなければなりません。ここで、nはタイムスタンプの精度であり、WITH TIME ZONEは任意です。
transaction-time列として機能する、派生PERIOD列に対して使用する開始境界列と終了境界列は、TIMESTAMP(6) WITH TIME ZONEのデータ型でなければなりません。
- [AS] VALIDTIME
- [AS] TRANSACTIONTIME
- 派生PERIOD列がテンポラル テーブルのvalid-time列またはtransaction-time列として使用できることを指定します。派生PERIOD列の開始列と終了列は、派生PERIOD列をvalid-time列またはtransaction-time列として使用する場合、プライマリ インデックスに含めることはできません。
テーブル レベルのUNIQUE定義
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- CONSTRAINT name
- 制約のオプション名。
- CURRENT TRANSACTIONTIME
- トランザクション時間のオープン行に対してのみ、制約違反のチェックが行なわれます。
- CURRENT VALIDTIME
- 有効時間の現在行および将来行に対してのみ、制約違反のチェックが行なわれることを指定します。履歴行に対するチェックは行なわれません。
- [SEQUENCED] VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれます。
- NONSEQUENCED VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれることを指定します。NONSEQUENCED制約は、valid-time列を非テンポラル列として扱います。そのため、この制約は非テンポラル テーブルに対する制約と同じになります。これらはテーブルのすべてのオープン行に適用されます。
- UNIQUE
- PRIMARY KEY
- 対象期間中はあらゆる時点でどの制約列内のどの値も1つの行内にしか存在できないことを指定します。
- column_name
- プライマリ キーまたは固有列として使用する列セット内の列を指定します。この列をvalid-time列またはtransaction-time列にすることはできません。
テーブル レベルの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列にすることはできません。
テーブル レベルのCHECK定義
制約の詳細については、テンポラル テーブルに対する制約の使用を参照してください。
- CONSTRAINT name
- 制約のオプション名。
- CURRENT TRANSACTIONTIME
- トランザクション時間のオープン行に対してのみ、制約違反のチェックが行なわれます。
- CURRENT VALIDTIME
- 有効時間の現在行および将来行に対してのみ、制約違反のチェックが行なわれることを指定します。履歴行に対するチェックは行なわれません。
これは、valid-time列に適用される制約のデフォルトのテンポラル修飾子です。
- [SEQUENCED] VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれることを指定します。
これは、VALIDTIME制約のデフォルト タイプであり、CURRENT、SEQUENCED、またはNONSEQUENCED接頭辞なしでVALIDTIMEキーワードを指定した場合に適用されます。
- NONSEQUENCED VALIDTIME
- 有効時間の履歴行、現在行、および将来行に対して、制約違反のチェックが行なわれることを指定します。NONSEQUENCED制約は、valid-time列を非テンポラル列として扱います。そのため、この制約は非テンポラル テーブルに対する制約と同じになります。これらはテーブルのすべてのオープン行に適用されます。
- CHECK (boolean_condition)
- ブール条件式が真になるように指定します。条件式が偽の場合、行はチェック制約違反になります。
チェック制約はvalid-time列またはtransaction-time列には設定できません。
テーブル レベルのNORMALIZE定義
NORMALIZEオプションについて、詳細はTeradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144を参照してください。
- NORMALIZE
- 行は指定されたPERIOD列に基づいて組み合わされ、派生PERIOD列を指定することができることを指定します。組み合わせされる行のその他のすべての列の値は、同じでなければなりません。組み合わされる行のPERIOD列の値は重なるか一致する必要があり、組み合わせ行の期間の集合である単一の期間にまとめられます。
正規化のPERIOD列は、派生PERIOD列にできます。
NORMALIZEをCREATE TABLE ASと共に使用することは有効ではありません。ただし、正規化テーブルをコピーしており、CREATE TABLE AS文にこれ以上列の指定がない場合、結果のテーブルのコピーは、元のように正規化されます。 - 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のデフォルトです。