ORACLE操作 ORACLE機能

[ORACLE] テーブルに主キーを追加する

投稿日:

主キーを追加するには、ALTER TABLE~ADD CONSTRAINT句を使用します。

主キー(プライマリーキー)は一時テーブルにも作成することができます。

構文

(主キーを追加する)
ALTER TABLE テーブル名 ADD CONSTRAINT 主キー名称 PRIMARY KEY (列1, 列2 ...);

通常テーブルでも一時テーブルでも、同じ構文です。

サンプル

例)テーブル「mytbl」に主キー「pk_mytable」(列:col1, col2)を追加する

実行結果
SQL> ALTER TABLE mytbl ADD CONSTRAINT pk_mytable PRIMARY KEY(col1, col2); 表が変更されました。

テンポラリーテーブルに作成時エラーが発生した場合

一時表に主キーを追加した時に、以下のようなエラーが発生した場合はtruncate tableを実行してから主キーの作成を行えばOKです。

実行例(w_tbl は一時表です。)
SQL> ALTER TABLE w_tbl ADD CONSTRAINT pk_w_tbl PRIMARY KEY(col1, col2); ALTER TABLE w_tbl ADD CONSTRAINT pk_w_tbl PRIMARY KEY(col1, col2) * ORA-14452: すでに使用されている一時表で索引を作成、変更または削除しようとしました。

例)truncate tableを行ってからプライマリーキーの追加を行う

実行例
SQL> truncate table w_tbl; 表が切り捨てられました。 SQL> ALTER TABLE w_tbl ADD CONSTRAINT pk_w_tbl PRIMARY KEY(col1, col2); 表が変更されました。

解説

  • 主キーを追加する時は、対象列のデータがユニーク(一意)かつNULLでない状態になっている必要があります。
    (データがゼロ件の場合はOKです。)
  • 主キーを変更したい場合は、一旦主キーを削除してから新規に主キーを作成します。
    (主キーを変更するコマンドはありません。)

スポンサーリンク

スポンサーリンク

-ORACLE操作, ORACLE機能
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ORACLE

[ORACLE] 列名を変更する(ALTER TABLE~RENAME COLUMN)

テーブルの列名を変更するには、ALTER TABLE~RENAME COLUMNを使用します。 構文 (列名変更構文) ...
ORACLE

[ORACLE関数] 文字をASCIIコードに変換する(ASCII)

文字をASCIIコードに変換するには、ASCII関数を使用します。 構文 (ASCII関数構文) ASCII(文字) サ ...
ORACLE

[DBMSパッケージ] マテリアライズドビューの再計算を行う(DBMS_MVIEW.REFRESH)

マテリアライズドビューの再計算を手動で行うには、DBMS_MVIEW.REFRESHパッケージを使用します。 サンプル ...
ORACLE

[SQL*Plus] SQL*Plusから直接DBMSパッケージを実行する

SQL*Plusから直接DBMSパッケージを実行するサンプルです。 サンプル 例)SQL*Plusから直接DBMS_OU ...
ORACLE

[SQL*Plus] SELECT結果の列幅を指定する

SELECT結果の列幅を指定するサンプルです。 構文 (SELECTの結果の列幅を指定する) COLUMN <列名> F ...

スポンサーリンク