Cambiar el nombre de la columna SQL Server 2008
Estoy usando SQL Server 2008 y Navicat. Necesito cambiar el nombre de una columna en una tabla usando SQL.
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Esta afirmación no funciona.
Usarsp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
Ver: SERVIDOR SQL: cómo cambiar el nombre de un nombre de columna o de tabla
Documentación: sp_rename (Transact-SQL)
Para tu caso sería:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
Recuerde utilizar comillas simples para encerrar sus valores.
Como alternativa SQL
, puede hacer esto en Microsoft SQL Server Management Studio. A continuación se muestran algunas formas rápidas de utilizar la GUI:
Primera Vía
Haga doble clic lento en la columna. El nombre de la columna se convertirá en un cuadro de texto editable.
Segunda Vía
Haga clic derecho en la columna y elija Cambiar nombre en el menú contextual.
Por ejemplo:
Tercera Vía
Esta forma es preferible cuando necesita cambiar el nombre de varias columnas de una sola vez.
- Haga clic derecho en la tabla que contiene la columna cuyo nombre necesita cambiarse.
- Haga clic en Diseño .
- En el panel de diseño de la tabla, haga clic y edite el cuadro de texto del nombre de la columna que desea modificar.
Por ejemplo:
NOTA: Sé que OP solicitó específicamente una solución SQL, pensé que esto podría ayudar a otros :)
Intentar:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
También debe especificar el esquema de la tabla o podría recibir este error:
Mensaje 15248, nivel 11, estado 1, procedimiento sp_rename, línea 238 El parámetro @objname es ambiguo o el @objtype (COLUMNA) reclamado es incorrecto.
Si se trata de un script de implementación, también recomendaría agregarle seguridad adicional.
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';
Como vengo aquí a menudo y luego me pregunto cómo usar los corchetes, esta respuesta podría ser útil para personas como yo.
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
- El
OldColumnName
no debe estar dentro[]
. No funcionará. - No
NewColumnName
lo pongas[]
, resultará en[[NewColumnName]]
.