Posted at

プライマリキーの変更を行う方法


確実にプライマリキーを削除する

ALTER TABLE テーブル名 DROP CONSTRAINT プライマリキー名 CASCADE DROP INDEX

CASCADE DROP INDEX を書かないと、不意にプライマリキーからは外れるけどインデックスがそのまま残るという現象に遭遇してしまう。(Oracle10g以降)

DMPでインポートされたテーブルに対して行うと発生するらしい。


プライマリキーを作成する

ALTER TABLE テーブル名 ADD

CONSTRAINT プライマリキー名
PRIMARY KEY (項目, 項目, 項目) USING INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE テーブルスペース名
STORAGE(INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
LOGGING
ENABLE

一時表に対してプライマリキーを指定したい場合は

ALTER TABLE テーブル名 ADD

CONSTRAINT プライマリキー名
PRIMARY KEY (項目, 項目, 項目) USING INDEX
ENABLE