【SQL Server/sp_rename】テーブル名とカラム名(列名)を変更する

システムストアドプロシージャ「sp_rename」を使用することで、
 ・テーブル名の変更
 ・カラム名(列名)の変更
等ができます!
※上記以外の変更もできます。制約名など。

PR

システムストアドプロシージャ「sp_rename」とは

SQL Serverが提供しているストアドプロシージャです。


以下を変更する場合は、このストアドプロシージャを使用します。
・テーブル名
・カラム名(列名)

以下を変更する場合は、このストアドプロシージャの使用を控えたほうが良いそうです。
・ストアド プロシージャ名
・トリガー名
・ユーザー定義関数名
・ビュー名

sp_renameの使用を控えたほうが良いもの
sp_renameの使用を控えたほうが良いもの
PR

テーブル名を変更する

テーブル名を変更する場合の構文は以下となります。

--テーブル名変更の構文
exec sp_rename 変更前のテーブル名, 変更後のテーブル名

ここでは例として、
 ・「sales」テーブルの名前を
 ・「sales_new」へ
変更するSQLを実行します。

また変更前後で対象のテーブル名を確認するSQLを実行します。

--変更前 確認
SELECT name FROM sys.tables
WHERE name in ('sales','sales_new')

--テーブル名を変更
exec sp_rename sales, sales_new

--変更後 確認
SELECT name FROM sys.tables
WHERE name in ('sales','sales_new')
変更前後のテーブル名
変更前後のテーブル名
PR

カラム名(列名)を変更する

カラム名(列名)を変更する場合の構文は以下となります。

--カラム名変更の構文
exec sp_rename 'テーブル名.変更前のカラム名(列名)', '変更後のカラム名(列名)'

カラム名(列名)を変更する場合は半角の「'(シングルコーテーション)」で囲みます。
→「.(ドット)」で繋ぐときは必ず囲む必要があります。

ここでは例として、「sales_new」テーブルの
 ・「price」カラム(列名)を
 ・「price_en」カラム(列名)へ
変更するSQLを実行します。

また変更前後で対象のカラム名(列名)を確認するSQLを実行します。

--変更前 確認
SELECT TOP(1) * FROM sales_new

--カラム名(列名)を変更
exec sp_rename 'sales_new.price', 'price_en'

--変更後 確認
SELECT TOP(1) * FROM sales_new
変更前後のカラム名(列名)
変更前後のカラム名(列名)
PR

備考

sp_renameを実行すると以下のメッセージが出力されますが、気にしなくて大丈夫です。

注意: オブジェクト名の任意の部分を変更すると、スクリプトやストアド プロシージャが中断する可能性があります。
気にする必要の無いメッセージ
気にする必要の無いメッセージ
タイトルとURLをコピーしました