Mudar o nome da coluna SQL Server 2008
estou a usar o servidor SQL 2008 e o Navicat. Preciso de mudar o nome de uma coluna numa tabela usando SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Esta declaração não funciona.
12 answers
Uso sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Ver: servidor SQL-como mudar o nome de uma coluna ou nome de uma tabela
Documentação: sp_rename (Transact-SQL)Para o seu caso seria:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
Lembre-se de usar aspas únicas para incluir os seus valores.
Em alternativa a SQL
, pode fazer isto no Estúdio de gestão de servidores SQL da Microsoft. Aqui estão algumas maneiras rápidas de usar a GUI:
Primeira Via
Duplo-click Lento na coluna. O nome da coluna tornar-se-á num campo de texto editável.
Segunda Via
Carregue com o botão direito na coluna e escolha mudar o nome no menu de contexto.
Por exemplo:
Terceira Via
Esta forma é preferível para quando você precisa mudar o nome de várias colunas de uma vez.
- carregue com o botão direito na tabela que contém a coluna que necessita de mudar o nome.
- Clique Em Design .
- no painel de desenho da tabela, carregue e edite a caixa de texto do nome da coluna que deseja alterar.
Por exemplo:
nota: eu sei que o OP pediu especificamente uma solução SQL, pensei que isto pudesse ajudar outros :)
Tenta:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
Você também deve especificar o esquema da tabela ou você pode obter este erro:
Se for um programa de implantação, também recomendo que lhe adicione alguma segurança adicional.Msg 15248, nível 11, estado 1, procedimento sp_rename, linha 238 o parâmetro @objname é ambíguo ou o alegado @objtype (coluna) é errado.
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';
Seria uma boa sugestão usar uma função já incorporada, mas outra forma de contornar é:
- crie uma nova coluna com o mesmo tipo de dados e novo nome.
- Execute uma instrução de actualização/inserção para copiar todos os dados para uma nova coluna.
- larga a coluna antiga.
O benefício por trás do uso do {[[0]} é que ele cuida de todas as relações associadas a ele.
Sp_ nome automaticamente muda o nome do índice associado sempre que uma chave primária ou restrição única é renomeada. Se um índice renomeado Está ligado a uma restrição de chave primária, a restrição de chave primária também é automaticamente renomeada por sp_rename. sp_rename pode ser usado para renomear índices XML primários e secundários.
Pode usar sp_rename
mudar o nome de uma coluna.
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
, O primeiro parâmetro é o objeto a ser modificado, o segundo parâmetro é o novo nome que vai ser dado o objeto, e o terceiro parâmetro COLUNA informa o servidor que mudar o nome é por column
, e pode também ser usado para mudar o nome tables
, index
e alias data type
.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
- O
OldColumnName
não deve estar em[]
. Não vai funcionar. - não coloque
NewColumnName
em[]
, irá resultar em[[NewColumnName]]
.
O Sql Server management studio tem alguns procedimentos armazenados definidos pelo sistema (SP)
Um dos quais é usado para mudar o nome de uma coluna.O SP é o sp_ nome
Sintaxe: sp_rename '[table_name].old_column_name','new_column_name'
Para mais informações, consulte este artigo: sp_rename by Microsoft Docs
Nota: na execução deste SP, o servidor sql dar-lhe-á uma mensagem de precaução como 'cuidado: alterar qualquer parte de um o nome do objecto poderá quebrar os programas e os procedimentos armazenados '.Isto é crítico somente se você escreveu seu próprio sp que envolve a coluna na tabela que você está prestes a mudar.
Versão Melhorada de @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
ALTER TABLE table_name RENAME COLUMN old_name new_name varchar(50) not null;
// without TO and specify data type of that column
Foi o suficiente para mudar o nome da coluna!
Ou podias apenas clicar duas vezes na coluna do estúdio de gestão SQL e renomeá-la através da IU...
Executar A Pesquisa:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'