modificar - rename sql server
Renombrar columna SQL Server 2008 (10)
Como a menudo vengo aquí y luego me pregunto cómo usar los corchetes, esta respuesta podría ser útil para aquellos como yo.
EXEC sp_rename ''[DB].[dbo].[Tablename].OldColumnName'', ''NewColumnName'', ''COLUMN'';
- El
OldColumnName
no debe estar en[]
. No funcionará. - No ponga
NewColumnName
en[]
, resultará en[[NewColumnName]]
.
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.
Como alternativa a SQL
, puede hacer esto en Microsoft SQL Server Management Studio. Aquí hay algunas maneras rápidas de usar la GUI:
Primera vía
Lento doble clic 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 para cuando necesite cambiar el nombre de varias columnas de una sola vez.
- Haga clic derecho en la tabla que contiene la columna que necesita cambiar de nombre.
- 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 :)
O simplemente puede hacer clic dos veces en la columna de SQL Management Studio y cambiar su nombre a través de la interfaz de usuario ...
Puede usar sp_rename
para cambiar el nombre de una columna.
USE YourDatabase;
GO
EXEC sp_rename ''TableName.OldColumnName'', ''NewColumnName'', ''COLUMN'';
GO
El primer parámetro es el objeto a modificar, el segundo parámetro es el nuevo nombre que se le dará al objeto, y el tercer parámetro COLUMN informa al servidor que el cambio de nombre corresponde a la column
, y también se puede usar para renombrar tables
. alias data type
index
y alias data type
.
Sería una buena sugerencia utilizar una función ya incorporada, pero otra forma es:
- Cree una nueva columna con el mismo tipo de datos y NUEVO NOMBRE.
- Ejecute una instrucción UPDATE / INSERT para copiar todos los datos en una nueva columna.
- Suelta la columna antigua.
El beneficio de usar sp_rename
es que se ocupa de todas las relaciones asociadas con él.
De la documentation :
sp_rename renombra automáticamente el índice asociado cada vez que se renombra una restricción PRIMARY KEY o UNIQUE. Si un índice renombrado está vinculado a una restricción PRIMARY KEY, la restricción PRIMARY KEY también se renombra automáticamente con sp_rename. sp_rename puede usarse para renombrar índices XML primarios y secundarios.
Sql Server Management Studio tiene algunos procedimientos almacenados (SP) definidos por el sistema.
Uno de los cuales se utiliza para cambiar el nombre de una columna. El SP es sp_rename
Sintaxis: sp_rename ''[table_name] .old_column_name'', ''new_column_name''
Para obtener más ayuda, consulte este artículo: sp_rename por Microsoft Docs
Nota: en la ejecución de este SP, el servidor SQL le dará un mensaje de advertencia como '' Precaución: cambiar cualquier parte del nombre de un objeto podría romper los scripts y los procedimientos almacenados ''. Esto es fundamental solo si ha escrito su propio SP, que incluye la columna En la tabla estás a punto de cambiar.
También debe especificar el esquema de la tabla o podría obtener este error:
Msg 15248, Nivel 11, Estado 1, Procedimiento sp_rename, Línea 238 El parámetro @objname es ambiguo o el @objtype (COLUMN) reclamado es incorrecto.
Si se trata de una secuencia de comandos 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'';
Tratar:
EXEC sp_rename ''TableName.OldName'', ''NewName'', ''COLUMN''
Usar sp_rename
EXEC sp_RENAME ''TableName.OldColumnName'' , ''NewColumnName'', ''COLUMN''
Consulte: SERVIDOR SQL - Cómo cambiar el nombre de una columna o un nombre de tabla
Documentación: sp_rename (Transact-SQL)
Para su caso sería:
EXEC sp_RENAME ''table_name.old_name'', ''new_name'', ''COLUMN''
Recuerde usar comillas simples para encerrar sus valores.
Versión mejorada 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