開発で仕様変更などに対応するテーブルの列追加を行おうと思います。
ただ、テストなどでSELECT *の実行を考えて列の最後に追加されるALTER TABLEではなく、テーブルをあらためて作成しデータの移管が良いのかなと思い次のようなパターンまで考えましたがもっと良い方法やベストプラクティスがあればご教授いただけますでしょうか?
できれば、列削除や列の位置移動なども考慮していただけると嬉しいです。
SIerなのでやたら謎の汎用性とかを求められるので(レビューアーが理解できない)その点をご容赦願えればと思います
- コピー元テーブルにロックをかける
- CTAS(CREATE TABLE AS SELECT)を実行してコピー先テーブルを作成
- コピー元テーブルをリネーム
- コピー先テーブルをリネーム
- コピー先テーブルにprimaryや外部参照の制約、インデックス、デフォルト値を作成(ここで何か何か漏れている気がするのですが)
- コピー元テーブルに依存する制約をコピー先に変更(ここがものによって作業が多そう)
- コピー元テーブルのロック解除
回答2件
あなたの回答
tips
プレビュー