ORACLEでテーブルの途中に列を追加する方法

こんなことでPM使いきった。悔しい。そんな手間かからないで済むように誰かのため自分のためにメモ書き。

■概要
①該当テーブルの生成文を事前取得
②既存PK制約削除
③テーブルリネーム
④新テーブル作成&インデックスを再付与(①で取得したのを改変)
⑤insert selectでデータ移行

■詳細
①該当テーブルの生成文を事前取得
SQLDEVELOPERで列追加したいテーブルを選択し、sqlタブに表示されるテーブル生成SQLをコピーしてどっかにメモしとく。

②既存PK制約&インデックス削除
ALTER TABLE テーブル名 CONSTRAINT PK名(PK_xxxみたいの) CASCADE DROP INDEX

③テーブルリネーム
ALTER TABLE テーブル名 RENAME TO リネーム後テーブル名

④新テーブル作成&インデックスを再付与
 ①で取得したのを改変して使う。列を追加するのだ。

⑤insert selectでデータ移行
 ④で作ったテーブルに、③でリネームしたテーブルからデータを引っこ抜く。
 追加した列はNULLなり、デフォルト値なり、なんかしがを直接指定してあげる。



以上!