テーブル名・プライマリキー名の変更方法(インデックス名も併せて行う)

プライマリキーの制約名の変更方法
プライマリキー制約の名前を変えたい場合、
制約の名前とインデックスの名前を変更する必要がある。
(プライマリーキー制約を作成すると、暗黙に索引(インデックス)が作られる。
その際、インデックス名は制約名と同じ名前で作られている。)

//1、テーブルのコピー
CREATE TABLE T_HOGE_WK AS SELECT * FROM T_HOGE;

//2、元TBLの削除
DROP TABLE T_HOGE;

//3、テーブル名の変更
ALTER TABLE T_HOGE_WK RENAME TO T_HOGE;

//4、制約名の変更
ALTER TABLE T_HOGE RENAME CONSTRAINT PK_T_HOGE_WK TO PK_T_HOGE;

//5、インデックス名の変更
ALTER INDEX PK_T_HOGE_WK RENAME TO PK_T_HOGE;

//6、元TBLを参照していたVIEWの再コンパイル
//  省略も可。VIEWを参照した時点で自動コンパイルされるため。
ALTER VIEW V_HOGE COMPILE;


//補足 依存性のチェックを行うSQL。statusが”VALID”ならOK、”INVALID”ならNG
select object_name, object_type, status from user_objects where object_name ='V_HOGE';


// ***** 以下は、ロールバックする場合のSQL ***** //

//7、新しく作成したテーブルを削除。PARGE句を指定し、RESYCLEBINに保存しない。
DROP TABLE T_HOGE PARGE;

//8、FLASHBACKをしてRESYCLEBINに残っている2でDROPしたテーブルを復活させる。
FLASHBACK TABLE T_HOGE

//9、関連VIEWの再コンパイル(6と同じコマンドを実行)
ALTER VIEW V_HOGE COMPILE;

このブログの人気の投稿

ActionFormのresetメソッド

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません

ORCLE SQL '_' アンダースコアについて