¿Cómo eliminar una columna de una tabla existente?
Tengo una mesa MEN
con Fname
yLname
Necesito eliminar el Lname
¿Cómo hacerlo?
sql-server
Gali
fuente
fuente
Respuestas:
fuente
Genérico:
En tu caso:
fuente
Su ejemplo es simple y no requiere ningún cambio adicional en la tabla, pero en general esto no es tan trivial.
Si otras columnas hacen referencia a esta columna, debe averiguar qué hacer con otras tablas / columnas. Una opción es eliminar las claves externas y mantener los datos referenciados en otras tablas.
Otra opción es encontrar todas las columnas de referencia y eliminarlas también si ya no se necesitan.
En tales casos, el verdadero desafío es encontrar todas las claves externas. Puede hacerlo consultando las tablas del sistema o utilizando herramientas de terceros como ApexSQL Search (gratis) o el rastreador de dependencias de Red Gate (premium pero más funciones). Hay todo un hilo sobre claves foráneas aquí
fuente
Esta es la respuesta correcta:
Pero ... si un
CONSTRAINT
existe en elCOLUMN
, entonces debeDROP
laCONSTRAINT
primera, entonces usted será capazDROP
delCOLUMN
. Para soltar unCONSTRAINT
, ejecute:fuente
constraint
una columna ?En SQL Server 2016 puede usar nuevas instrucciones DIE.
La consulta anterior se puede volver a ejecutar en
drops
la columna solo siexists
en la tabla; de lo contrario, no arrojará un error.En lugar de usar grandes
IF
envoltorios para verificar la existencia decolumn
antes de soltarlo, simplemente puede ejecutar laDDL
declaración anteriorfuente
La pregunta es, ¿solo puede eliminar una columna de una tabla que no existe ;-)
fuente
La respuesta simple a esto es usar esto:
Se puede especificar más de una columna de esta manera:
Desde SQL Server 2016 también es posible soltar la columna solo si existe. Esto evita que recibas un error cuando la columna no existe, algo que probablemente no te importe.
Hay algunos requisitos previos para colocar columnas. Las columnas soltadas no pueden ser:
Si alguno de los anteriores es cierto, primero debe eliminar esas asociaciones.
Además, debe tenerse en cuenta que al soltar una columna no se recupera el espacio del disco duro hasta que se reconstruye el índice agrupado de la tabla. Como tal, a menudo es una buena idea seguir lo anterior con un comando de reconstrucción de tabla como este:
Finalmente, como algunos han dicho, esto puede ser lento y probablemente bloqueará la mesa durante todo el tiempo. Es posible crear una nueva tabla con la estructura deseada y luego cambiar el nombre de esta manera:
Pero tenga en cuenta que aquí hay una ventana para la pérdida de datos de las filas insertadas entre la primera selección y el último comando de cambio de nombre.
fuente
Para agregar columnas en la tabla existente:
Para eliminar columnas en la tabla existente:
fuente
Esto también se puede hacer a través de la GUI de SSMS. Lo bueno de este método es que le advierte si hay relaciones en esa columna y también puede eliminarlas automáticamente.
Como dije antes, si hay relaciones que también tendrían que eliminarse, en este punto le preguntará si desea eliminarlas también. Es probable que deba hacerlo para eliminar la columna.
fuente
Si está utilizando C # y la columna Identidad es int, cree una nueva instancia de int sin proporcionarle ningún valor. Funcionó para mí.
fuente
Sintaxis:
Por ejemplo:
fuente