ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

SQL Serverにおけるテーブルのカラム追加の位置について

かなり久しぶりの投稿となってしまいましたが、最近知ったSQL Serverの知識をメモ程度に書きたいと思います。

あるとき、SQL Serverでテーブルにカラムの新規追加をするときに、単純に現在のテーブル定義の最後尾にカラムを追加するのではなく、任意の場所にカラムの追加をしたいと思いやり方を調べました。

なぜそのようなことをしようと思ったかというと、そのカラムを追加しようと思ったテーブルはカラム定義の最後尾に更新日時や更新者のような項目を定義していたので、その後ろに新規カラムを追加するのはなんだか嫌だなぁと思ったからです。

そして調べた結果ですが、結論としては「SQL Serverでは任意の位置にカラムの新規追加をすることができない」ようです。
正直、できて当たり前かなというか、普通に構文あるんだろうなと思っていたので少々驚きました。

もし、本当にそれを実現したい場合はテーブル定義をはじめからやり直さなければならないとのことです。
つまり、データをバックアップし、テーブルを削除し、テーブルを再定義したあと、バックアップしたデータを戻すという一連の作業が必要になります。
手軽にやろうと思っていたら、上記の手順を踏まなきゃいけないとわかり面倒だなぁと思いました。。

カラムの追加時に位置を指定できないことは分かりましたが、追加した後に位置の変更とかできないのかなとも思ったので調べてみました。
それについてはMicrosoftの公式ドキュメントに記載がありました。
まず、Transact-SQLSQL ServerSQL文法)では、列の順序は変更できないとのことです。ただし、SQL Server Mangement Studioがあれば一応グラフィカルにカラムの列の順序を変更できるそうです。
テーブル内の列の順序の変更 - SQL Server | Microsoft Docs

因みに、上記はSQL Serverの話ですが他のRDMSはどうなのかですが、ネットで軽く調べた限りではMySQLは位置を指定してカラム追加を行えるようです。他、OraclePostgreSQLなどはできなさそうなことが書いてありました。このことから、今回のようなテーブルのカラム追加の位置を指定するような要望は少ないのでしょうか。

かなりつらつらと書いてしまいましたが、今回はこの辺で失礼いたします。
最後までお読みいただきありがとうございました。