2009-04-16 20 views
36

¿Cómo elimino una columna de una tabla existente?Eliminación de columnas en MS SQL Server

+0

posible duplicado de [¿Cómo eliminar una columna de una tabla existente?] (Http: // stackoverflow.com/questions/5626344/how-to-remove-a-column-from-an-existing-table) –

+1

En realidad, la otra pregunta fue escrita 2 años después de esta, por lo que sería el duplicado. –

Respuesta

82

El comando que estás buscando es:

alter table tblName drop column columnName 

donde tblName es el nombre de la tabla y columnName es el nombre de la columna, pero hay algunas cosas que pueda necesitar hacer primero

  • Si hay referencias de clave externa a la columna, primero tendrá que deshacerse de ellas.
  • Si hay un índice que utiliza esa columna, tendrá que deshacerse de él o ajustarlo para no usar esa columna.

Tenga en cuenta que el rendimiento de este comando puede no ser necesariamente bueno. Una opción es esperar un período de inactividad cuando puede estar seguro de que nadie accederá a la base de datos, cambiar el nombre de la tabla actual, luego usar create table y insert into ... select from para transferir las columnas que no desea eliminar.

Una de las últimas versiones de Oracle en realidad tiene una eliminación suave que simplemente marca una columna como no utilizada sin eliminarla físicamente. Tiene el mismo efecto ya que no se puede seguir haciendo referencia a él y hay un comando a lo largo de las líneas alter table ... drop unused columns que se debe ejecutar en tiempo de silencio, lo que hace el trabajo duro de eliminarlo físicamente.

Esto tiene la ventaja de "desaparecer" las columnas inmediatamente sin reducir el rendimiento de la base de datos durante las horas punta.

11

ALTER TABLE XXX DROP COLUMN YYY;

3

Para las tablas grandes esto puede ser muy lento. A menudo puede ser mucho más rápido crear una nueva tabla, un duplicado de la anterior pero con los cambios e insertar los datos. Suelta la tabla anterior y luego cambia el nombre de la nueva tabla.

2

Esto también se puede hacer a través de la GUI de SSMS.

Me gusta este método porque te avisa si hay relaciones en esa columna y también puede eliminarlas automáticamente. Como dice PaxDiablo, si hay relaciones, primero deben borrarse.

  1. mesa puestos en la vista Diseño (clic derecho en la tabla), así:

enter image description here

  1. Haga clic derecho sobre la columna en la vista Diseño de la tabla y haga clic "Eliminar columna"

enter image description here

En este punto, si hay alguna relación que también debería eliminarse, le preguntará si también desea eliminarla.

Cuestiones relacionadas