nombre modificar ejemplo drop columna column cambiar sql sql-server sql-server-2008 alter-table

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.

  1. Haga clic derecho en la tabla que contiene la columna que necesita cambiar de nombre.
  2. Haga clic en Diseño .
  3. 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:

  1. Cree una nueva columna con el mismo tipo de datos y NUEVO NOMBRE.
  2. Ejecute una instrucción UPDATE / INSERT para copiar todos los datos en una nueva columna.
  3. 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''



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