16.20 - MODIFY PRIMARY - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ定義言語 構文規則および例

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-162K-JPN
Language
日本語 (日本)

プライマリ インデックスまたは基本AMPインデックスを追加または変更します。MODIFYオプションを含む同じALTER TABLE文では、基本テーブル パラメータを変更することも、テーブルまたは結合インデックスを再検証することもできません。

index_name
名前のないプライマリ インデックスの命名、またはプライマリ インデックスの名前の変更。データベース オブジェクトの命名については、<Teradata Vantage™ SQL基礎、B035-1141>を参照してください。
(index_column_name)
テーブルのプライマリ インデックスのプロパティを変更します。複合プライマリ インデックスの場合、index_column_nameは、すべてのインデックス列を括弧で囲んだカンマ区切りのリストを示します。プライマリ インデックスの派生PERIOD列の開始列と終了列を指定することはできません。テーブルは空である必要があります。
行レベル セキュリティ制約列をプライマリ インデックスのコンポーネントとして含めるようにテーブルを変更することはできません。
JSONまたはDATASETデータ型の列にプライマリ インデックスは定義できません。
AMP
行は、列パーティション テーブルまたは結合インデックス用に、各AMPにハッシュ分散されます。列パーティション値はそれぞれのAMP上で、内部パーティション番号と列パーティション テーブルまたは結合インデックス用の行ハッシュによって順序付けられます。
読みやすくするために、必要に応じてINDEXキーワードをAMPとともに指定できます。
PRIMARY AMP句を指定する場合、インデックス リスト内に単独で、またはPRIMARY AMP句内で、列パーティション レベルを含むPARTITION BY句を指定する必要があります。
INDEX
PRIMARY INDEX句およびPARTITION BY句が指定される場合、列パーティション レベルがPARTITION BY句に含まれることがあります。PARTITION BY句はPRIMARY INDEX指定に含めることも、単独でインデックス リストに含めることもできます。PARTITION BY句には、行パーティション レベルを含めることができます。
NOT NAMED
名前付きインデックスの名前を削除します。
UNIQUE
非固有プライマリ インデックスを固有プライマリ インデックスに変更します。テーブルは空になっている必要があります。
テンポラル テーブルに固有プライマリ インデックスを含めることはできません。
NOT UNIQUE
固有プライマリ インデックスを非固有プライマリ インデックスに変更します。テーブルは空である必要があります。

例: プライマリ インデックス テーブルをプライマリ インデックス列パーティション テーブルに変更する

この例では、次のテーブル定義を変更します。
CREATE TABLE pi3 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a);
空のテーブルに対し次のいずれかのALTER TABLE文を実行します。
ALTER TABLE pi3 MODIFY PARTITION BY COLUMN;
ALTER TABLE pi3 MODIFY PRIMARY INDEX PARTITION BY COLUMN;
ALTER TABLE pi3 MODIFY PRIMARY INDEX (a) PARTITION BY COLUMN;
次のテーブル定義の結果:
CREATE TABLE pi3 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a) PARTITION BY COLUMN;

例: プライマリ インデックス テーブルをプライマリ インデックス列パーティションRPテーブルに変更する

この例では、次のテーブル定義を変更します。
CREATE TABLE pi4 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a);
空のテーブルに対し次のいずれかのALTER TABLE文を実行します。
ALTER TABLE pi4 MODIFY
  PARTITION BY (COLUMN, RANGE_N(b BETWEEN 1 AND 10 EACH 1));
ALTER TABLE pi4 MODIFY PRIMARY INDEX
    PARTITION BY (COLUMN, RANGE_N(b BETWEEN 1 AND 10 EACH 1));
ALTER TABLE pi4 MODIFY PRIMARY INDEX (a)
  PARTITION BY (COLUMN, RANGE_N(b BETWEEN 1 AND 10 EACH 1));
次のテーブル定義の結果:
CREATE TABLE pi4 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a)
  PARTITION BY (COLUMN, RANGE_N(b BETWEEN 1 AND 10 EACH 1));

例: プライマリ インデックス列パーティション テーブルを基本AMPインデックス列パーティション テーブルに変更する

この例では、次のテーブル定義を使用します。
CREATE TABLE p8 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a) PARTITION BY COLUMN;
空のテーブルに対し次のいずれかのALTER TABLE文を実行します。
ALTER TABLE p8 MODIFY PRIMARY AMP INDEX;
ALTER TABLE p8 MODIFY PRIMARY AMP INDEX (a);
ALTER TABLE p8 MODIFY PRIMARY AMP INDEX (a) PARTITION BY COLUMN;
次のテーブル定義の結果:
CREATE TABLE p8 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY AMP INDEX (b) PARTITION BY COLUMN;

例: プライマリ インデックス列パーティション テーブルをNoPI列パーティション テーブルに変更する

この例では、次のテーブル定義を使用します。
CREATE TABLE p9 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a) PARTITION BY COLUMN;
次のいずれかのALTER TABLE文を空のテーブルに対して実行します。
ALTER TABLE p9 MODIFY NO PRIMARY INDEX;
ALTER TABLE p9 MODIFY NO PRIMARY INDEX PARTITION BY COLUMN;
次のテーブル定義の結果:
CREATE TABLE p9 (a INTEGER, b INTEGER, c CHAR(10))
  NO PRIMARY INDEX PARTITION BY COLUMN;

例: プライマリ インデックス テーブルを基本AMPインデックス列パーティション テーブルに変更する

この例では、次のテーブル定義を使用します。
CREATE TABLE p11 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a);
次のいずれかのALTER TABLE文を空のテーブルに対して実行します。
ALTER TABLE p11 MODIFY PRIMARY AMP INDEX PARTITION BY COLUMN;
ALTER TABLE p11 MODIFY PRIMARY AMP INDEX (a) PARTITION BY COLUMN;
次のテーブル定義の結果:
CREATE TABLE p11 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY AMP INDEX (a) PARTITION BY COLUMN;

例: プライマリ インデックス テーブルを異なるインデックス列を持つ基本AMPインデックス列パーティション テーブルに変更する

この例では、次のテーブル定義を使用します。
CREATE TABLE p12 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a);
空のテーブルに対し次のALTER TABLE文を実行します。
ALTER TABLE p12 MODIFY PRIMARY AMP INDEX (b) PARTITION BY COLUMN;
次のテーブル定義の結果:
CREATE TABLE p12 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY AMP INDEX (b) PARTITION BY COLUMN;

例: 基本AMPインデックス列パーティション テーブルをプライマリ インデックス非パーティション テーブルに変更する

この例では、次のテーブル定義を使用します。
CREATE TABLE pt3 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY AMP INDEX (a) PARTITION BY COLUMN;
次のいずれかのALTER TABLE文を空のテーブルに対して実行します。
ALTER TABLE pt3 MODIFY PRIMARY INDEX (a) NOT PARTITIONED;
ALTER TABLE pt3 MODIFY PRIMARY INDEX NOT PARTITIONED;
次のテーブル定義の結果:
CREATE TABLE pt3 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (a);

例: 基本AMPインデックス列パーティション テーブルをプライマリ インデックス列パーティション テーブルに変更する

この例では、次のテーブル定義を使用します。
CREATE TABLE pt4 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY AMP INDEX (a) PARTITION BY COLUMN;
次のいずれかのALTER TABLE文を空のテーブルに対して実行します。
ALTER TABLE pt4 MODIFY PRIMARY INDEX (b);
ALTER TABLE pt4 MODIFY PRIMARY INDEX (b) PARTITION BY COLUMN;
次のテーブル定義の結果:
CREATE TABLE pt4 (a INTEGER, b INTEGER, c CHAR(10))
  PRIMARY INDEX (b) PARTITION BY COLUMN;