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

[PL/SQL] ROWTYPE型をINSERTする

ROWTYPE型で定義した値を、そのままINSERTするサンプルです。 サンプル 例)SAMPLE_TBLテーブルにRO ...
ORACLE

[データディクショナリ] ユーザーまたはロールに付与されたロールの情報を取得する

ユーザーまたはロールに付与されたロールの情報を参照するには、 XXX_ROLE_PRIVSデータディクショナリビューを参 ...
ORACLE

[SQL*Plus] オラクルにログインする

SQL*Plusでオラクルにログインするには、sqlplusコマンドを使用します。 構文 (sqlplusコマンドの構文 ...
ORACLE

[データディクショナリ] シーケンスの情報を取得する

SEQUENCE(順序)の情報を参照するには、 SEQUENCESデータディクショナリビューを参照します。 SEQUEN ...
ORACLE

[PL/SQL] ストアドを再コンパイルする

パッケージやプロシージャを再コンパイルするには、 ALTER PROCEDURE文 / ALTER PACKAGE文を使 ...

スポンサーリンク