MODIFY PRIMARY INDEX句またはMODIFY PRIMARY AMP INDEX句については、次のルールを参照してください。パーティション式については、テーブルのパーティション変更に関するルールを参照してください。
- テーブルのプライマリ インデックスまたは基本AMPインデックスの構成列を変更する場合は、MODIFY PRIMARY INDEXまたはMODIFY PRIMARY AMP INDEXを指定する必要があります。
テーブルのパーティションのみを変更する場合は、PRIMARY INDEXまたはPRIMARY AMP INDEXを指定せずに、MODIFYのみを指定します。
- ALTER TABLE文を使用して、以下のデータベース オブジェクトのプライマリ インデックスまたは基本AMPインデックスを変更することはできません。
- グローバル一時テーブル
- 揮発テーブル
- 結合インデックス
- ハッシュ インデックス
- テーブルのプライマリ インデックス、基本AMPインデックス、またはパーティションの変更と他のテーブルの定義の変更を1つのALTER TABLE文で実行することはできません。これらの操作は相互に排他的です。
- プライマリ インデックスまたは基本AMPインデックスのあるテーブルを変更して、異なるセットのプライマリ インデックス列または基本AMPインデックス列を含めることはできません。
- テーブルを変更して固有のプライマリ インデックスを付ける場合に、同じ列セットに基づく固有のセカンダリ インデックスが現時点で存在すれば、データベースは、その固有のセカンダリ インデックスを自動的に削除します。
- 1つ以上の指定したオプションで、プライマリ インデックスの定義を変更しなければなりません。そうしなければ、システムはエラーを返します。
既存のパーティション テーブルまたは結合インデックスでの別のパーティション式の指定は、その新しい式の結果が前のパーティション式によって作成された結果と同じであっても、変更と見なされます。
- プライマリ インデックスまたは基本AMPインデックスの列セットを指定しない場合、プライマリ インデックスまたは基本AMPインデックスの既存の列セットが保持されます。
- 変更結果のプライマリ インデックスまたは基本AMPインデックスが固有の場合、および同じ列セットに既存のUSIもある(定義が明示的か暗黙的かに関係なく)場合、USIおよび関連するすべてのPRIMARY KEYまたはUNIQUE制約は冗長なため、削除されます。
- 変更結果のプライマリ インデックスが固有ではなく、変更前のプライマリ インデックスがPRIMARY KEY制約またはUNIQUE制約によって暗黙的に定義されていた場合、その制約は削除されます。
- 以下のデータ型の列で、テーブルまたは結合インデックスのプライマリ インデックス、基本AMPインデックスまたはパーティション式を定義することはできません。
- BLOB
- CLOB
- JSON
- XML
- PERIOD
- 派生PERIOD
- ARRAY/VARRAY
- 地理空間
- BLOB列、CLOB列、またはXML列が含まれているDISTINCT型またはSTRUCTURED型のUDT
他のすべてのTeradata SQLデータ型は有効です。
- 現在または結果のいずれかのプライマリ インデックス列のセットに、FOREIGN KEY参照またはFOREIGN KEY制約がある場合、インデックスの名前だけを変更できます。そうしないと、リクエストがアボートされ、Teradata Databaseによってリクエスト側にエラーが返されます。
- 値が入ったテーブルまたは結合インデックスのプライマリ インデックスまたは基本AMPインデックスの列セットを指定する場合、その列セットは、プライマリ インデックスまたは基本AMPインデックスの既存の列セットと同じでなければなりません。
プライマリ インデックスまたは基本AMPインデックスの現在の列セットと異なるプライマリ インデックスまたは基本AMPインデックスの列セットを指定する場合、テーブルは空である必要があります。
- 現時点でNUPIがあるプライマリ インデックス付きのテーブルにすでにデータが入っている場合に、そのテーブルを変更して、同じ列セットに基づくUPIを付けることができるのは、その列セットでUSIが定義されている場合に限られます。
- 値が入ったテーブルまたは結合インデックスのプライマリ インデックスの列セットとして、PRIMARY KEYまたはUNIQUE制約で暗黙的に定義されている現在のプライマリ インデックスとは異なる列セットを指定する場合、システムはPRIMARY KEYまたはUNIQUE制約を削除します。
- テーブルまたは結合インデックスの現在のプライマリ インデックスが、PRIMARY KEYまたはUNIQUE制約で暗黙的に定義され、ALTER TABLEを使用してPARTITION BY句を指定すると、システムはPRIMARY KEYまたはUNIQUE制約を削除します。
- キュー テーブルのプライマリ インデックスを変更してパーティション化することはできません。
キュー テーブルは、パーティション プライマリ インデックスまたは基本AMPインデックスを持つことはできません。
プライマリ インデックスまたは基本AMPインデックスの名前の変更
プライマリ インデックスまたは基本AMPインデックスの名前の変更には、以下のルールが適用されます。
- index_nameを、テーブルまたは結合インデックスに定義されている、セカンダリ インデックスまたは制約の名前と同じにすることはできません。
- index_nameを指定する場合、それがインデックスの名前になります。
- NOT NAMEDを指定する場合、インデックスの名前はありません。
- index_nameもNOT NAMED句も指定しない場合、現在の名前が変更されません。