列または列セットがtable_nameのプライマリ キーになります。定義された列セットにより、テーブル内の各行が固有になります。プライマリ キーは、参照制約を強制するためにも使用されます。
この列はNOT NULLとして定義する必要があります。
- 単一の列または列セットに対する列属性
- テーブル属性(揮発テーブルを除く)
- BLOB
- BLOB UDT
- CLOB
- CLOB UDT
- VARIANT_TYPE
- ARRAY
- VARRAY
- Period
- XML
- Geospatial
- JSON
- DATASET
1つのテーブルに指定できるプライマリ キーは1つのみです。他のテーブルとの参照整合性関係のためのプライマリ キーの候補を指定するには、UNIQUE列属性を使用します。これは、参照制約には必要ありませんが、標準の参照整合性制約とバッチ参照整合性制約では必要です。
PRIMARY KEY制約は、テンポラル テーブルと非テンポラル テーブルに対して有効です。テンポラル テーブルとテンポラル構文については、<Teradata Vantage™ - ANSIテンポラル テーブル サポート、B035-1186>および<Teradata Vantage™ - テンポラル テーブル サポート、B035-1182>を参照してください。
PRIMARY KEY制約の場合、非テンポラル テーブルではシステム定義のセカンダリ インデックスが使用され、テンポラル テーブルでは単一テーブル結合インデックスが使用されます。この制約に使用するシステム定義のセカンダリ インデックスまたは単一テーブル結合インデックスは、テーブルごとに最大32のセカンダリ インデックス、ハッシュ インデックス、および結合インデックスにカウントされます。
UNIQUE制約のように、PRIMARY KEY制約により、代替キーが参照整合性関係で指定されているときには、その代替キーの固有性が保証されます。
正規化テーブルに対してPRIMARY KEY制約が定義されると、Vantageは正規化行の制約を検証します。正規化された行がPRIMARY KEY制約に違反している場合、システムは要求元にエラーを返します。
名前なしのPRIMARY KEY列制約には、この構文を使用します。
PRIMARY KEY
- CONSTRAINT constraint_name
- 名前付きのPRIMARY KEY列制約には、この構文を使用します。
CONSTRAINT constraint_name PRIMARY KEY
例: テーブル レベル名前付きCHECK、PRIMARY KEY、UNIQUE、およびFOREIGN KEY制約の指定
この例のリクエストでは、テーブル レベルの制約に名前を付けます。
CREATE TABLE good_2 ( column_1 INTEGER NOT NULL, column_2 INTEGER NOT NULL, column_3 INTEGER NOT NULL, column_4 INTEGER NOT NULL, column_5 INTEGER, column_6 INTEGER, CONSTRAINT primary_1 PRIMARY KEY (column_1, column_2), CONSTRAINT unique_1 UNIQUE (column_3, column_4), CONSTRAINT check_1 CHECK (column_3 > 0 OR column_4 IS NOT NULL), CONSTRAINT reference_1 FOREIGN KEY (column_5, column_6) REFERENCES parent_1 (column_2, column_3));
例: 列レベルおよびテーブル レベル名前付きおよび名前なしPRIMARY KEY、UNIQUE、およびFOREIGN KEY制約の混合の指定
この文では、名前付きおよび名前なしの制約を、列レベルとテーブル レベルで定義しています。
CREATE TABLE good_3 ( column_1 INTEGER NOT NULL CONSTRAINT primary_1 PRIMARY KEY, column_2 INTEGER NOT NULL CONSTRAINT unique_1 UNIQUE CONSTRAINT check_1 CHECK (column_2 <> 3) CONSTRAINT reference_1 REFERENCES parent_1 CHECK (column_2 > 0) REFERENCES parent_1 (column_4), column_3 INTEGER NOT NULL, column_4 INTEGER NOT NULL, column_5 INTEGER, CONSTRAINT unique_2 UNIQUE (column_3), CONSTRAINT check_2 CHECK (column_3 > 0 AND column_3 < 100), CONSTRAINT reference_2 FOREIGN KEY (column_3) REFERENCES parent_1 (column_5), UNIQUE (column_4), CHECK (column_4 > column_5), FOREIGN KEY (column_4, column_5) REFERENCES parent_1 (column_6, column_7));