主キーを追加するには、ALTER TABLE~ADD CONSTRAINT句を使用します。
主キー(プライマリーキー)は一時テーブルにも作成することができます。
構文
- (主キーを追加する)
- ALTER TABLE テーブル名 ADD CONSTRAINT 主キー名称 PRIMARY KEY (列1, 列2 ...);
通常テーブルでも一時テーブルでも、同じ構文です。
サンプル
例)テーブル「mytbl」に主キー「pk_mytable」(列:col1, col2)を追加する
1 |
ALTER TABLE mytbl ADD CONSTRAINT pk_mytable PRIMARY KEY(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です。) - 主キーを変更したい場合は、一旦主キーを削除してから新規に主キーを作成します。
(主キーを変更するコマンドはありません。)