PRIMARY KEY
備考
テーブル定義に主キーを追加するには、ADD 句で PRIMARY KEY を使用します。主キーは、ヌル値を含まない、重複のないインデックスです。主キーを指定すると、PSQL によって、定義された列のグループに対して、指定された属性で重複のないインデックスが作成されます。
テーブルに複数の主キーがあってはならないので、既に主キーが定義されているテーブルに主キーを追加することはできません。テーブルの主キーを変更するには、ALTER TABLE ステートメントで DROP 句を使用して既存のキーを削除し、新しい主キーを追加します。
メモ: 主キーを追加したり、その他の参照整合性(RI)操作を行ったりするには、その前にデータベース名を使用してデータベースにログインする必要があります。
テーブル定義に主キーを追加するには、ALTER TABLE ステートメントの ADD 句に PRIMARY KEY を含めます。
主キーを追加する前に、主キー列リスト内の列が NOT NULL として定義されていることを確認する必要があります。主キーは重複のないインデックスであるため、ヌル値を許可しない列でのみ作成することができます。
ヌル値を許可しない列に基づく重複のないインデックスが既に存在する場合、ADD PRIMARY KEY によって別の重複のないインデックスは作成されません。代わりに、既存の重複のないインデックスが主キーになります。たとえば、次のステートメントでは、T1_C1C2 という名前付きインデックスが主キーになります。
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(10) NOT NULL)
CREATE UNIQUE INDEX t1_c1c2 ON t1(c1,c2)
ALTER TABLE t1 ADD PRIMARY KEY(c1, c2)
このような主キーを削除した場合、その主キーは重複のないインデックスに切り替わります。
ALTER TABLE t1 DROP PRIMARY KEY
ヌル値を許可しない列に基づく重複のないインデックスがテーブル内に存在しない場合は、ADD PRIMARY KEY によって、ヌル値を許可しない列に基づいて重複のないインデックスが作成されます。DROP PRIMARY KEY によって、重複のないインデックスは完全に削除されます。
テーブル定義に主キーを追加するには、CREATE TABLE ステートメントに PRIMARY KEY 句を含めます。
データベースに参照制約を定義するには、PRIMARY KEY 句を使用して親テーブルの主キーを指定する必要があります。主キーは、1 つまたは複数の列で構成することができますが、ヌルではない列に対してのみ定義できます。指定する列は、CREATE TABLE ステートメントの列定義リストに含まれている必要もあります。
主キーを指定すると、PSQL によって、定義された列のグループに対して、指定された属性でインデックスが作成されます。CREATE TABLE ステートメント内で、列が NOT NULL として明確に定義されていない場合、PSQL はその列を強制的にヌル値を許可しない列にします。また、PSQL はその列に基づいて重複のないインデックスを作成します。
たとえば、次の 2 つのステートメントは同じ結果になります。
CREATE TABLE t1 (c1 INT, c2 CHAR(10), PRIMARY KEY(c1,c2))
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(10) NOT NULL, PRIMARY KEY(c1,c2))
例
次のステートメントは、Faculty というテーブルに主キーを定義します。
ALTER TABLE Faculty ADD PRIMARY KEY (ID)
ID 列は、ヌル値を含まない重複のないインデックスとして定義されています。
関連項目