SQL Server 2008とNavicatを使用しています。 SQLを使用してテーブル内の列の名前を変更する必要があります。
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
この文は機能しません。
sp_rename
を使う
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
参照項目: SQL SERVER - 列名またはテーブル名の変更方法
ドキュメント: sp_rename (Transact-SQL)
あなたの場合はそれでしょう:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
値を囲むには、一重引用符を使用することを忘れないでください。
SQL
の代わりに、Microsoft SQL Server Management Studioでこれを実行できます。 GUIを使用した簡単な方法は次のとおりです。
列をゆっくりダブルクリックします。列名が編集可能なテキストボックスになります。
列を右クリックして、コンテキストメニューから名前の変更を選択します。
例えば:
この方法は、一度に複数の列の名前を変更する必要がある場合に適しています。
例えば:
注: OPは特にSQLソリューションを求めていることを知っています。これは他の人に役立つかもしれないと思いました:)
試してください:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
テーブルのスキーマも指定する必要があります。そうしないと、このエラーが発生する可能性があります。
メッセージ15248、レベル11、状態1、プロシージャsp_rename、行238 パラメータ@objnameがあいまいであるか、要求された@objtype(COLUMN)が間違っています。
それがデプロイメントスクリプトであるならば、私はそれにさらにセキュリティを追加することをお勧めします。
if exists (select 1 from sys.columns where name = 'OldColumnName' and object_name(object_id) = 'TableName') AND
not exists (select 1 from sys.columns where name = 'NewColumnName' and object_name(object_id) = 'TableName')
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
既に組み込まれている関数を使用するのは良い提案ですが、他の方法は:
sp_rename
を使うことの背後にある利点は、それがそれに関連するすべての関係の面倒を見るということです。
主キー制約または一意制約の名前が変更されると、sp_renameは自動的に関連付けられたインデックスの名前を変更します。名前が変更されたインデックスがPRIMARY KEY制約に関連付けられている場合、PRIMARY KEY制約もsp_renameによって自動的に名前変更されます。 sp_renameを使用して、プライマリXMLインデックスとセカンダリXMLインデックスの名前を変更できます。
sp_rename
を使用して列の名前を変更できます。
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
最初のパラメータは変更されるオブジェクト、2番目のパラメータはオブジェクトに付けられる新しい名前、3番目のパラメータ _ column _ は名前の変更がcolumn
に対するものであることをサーバーに通知しますtables
、index
およびalias data type
の名前変更にも使用できます。
私はよくここに来て括弧の使い方を考えているので、この答えは私のような人には役に立つかもしれません。
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
OldColumnName
は[]
にあってはいけません。うまくいかないだろう。NewColumnName
を[]
に入れないでください。[[NewColumnName]]
になります。SQL Server Management Studioには、システム定義のストアドプロシージャ(SP)がいくつかあります。
そのうちの1つは、列の名前変更に使用されます。SPは、 sp_rename です。
構文:sp_rename '[table_name] .old_column_name'、 'new_column_name'
さらに助けが必要な場合は、この記事を参照してください。 Microsoft Docsによるsp_rename
注:このSPを実行すると、SQLサーバから「」のような警告メッセージが表示されます。 procedure 'これは、変更しようとしているテーブル内の列を含む独自のspを書いた場合にのみ重要です。
@Taherの改良版
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)
SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName
IF EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
または、SQL Management Studioの列を2回ゆっくりクリックして、UIから名前を変更することもできます。