主キーを追加するには、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です。) - 主キーを変更したい場合は、一旦主キーを削除してから新規に主キーを作成します。
(主キーを変更するコマンドはありません。)