我使用SQL Server 2008和Navicat。我需要使用SQL重命名表中的列。
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
这个说法不成立。
我使用SQL Server 2008和Navicat。我需要使用SQL重命名表中的列。
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
这个说法不成立。
当前回答
你还应该指定表的模式,否则你可能会得到这个错误:
Msg 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
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
参见:SQL SERVER -如何重命名列名或表名
文档:sp_rename (Transact-SQL)
对于您的情况,它将是:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
记住使用单引号将值括起来。
可以使用sp_rename重命名列。
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
第一个参数是要修改的对象,第二个参数是将赋予对象的新名称,第三个参数COLUMN通知服务器,重命名是针对列的,也可以用于重命名表、索引和别名数据类型。
Try:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
或者你可以在SQL Management Studio中慢点两次列并通过UI重命名它…
运行查询:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'