sql server - valor - ¿Cómo eliminar una columna de una tabla existente?




modificar columna sql server (6)

En SQL Server 2016 puedes usar nuevas sentencias DIE.

ALTER TABLE Table_name DROP COLUMN IF EXISTS Column_name

La consulta anterior se puede volver a ejecutar, se drops la columna solo si exists en la tabla, de lo contrario no generará un error.

En lugar de usar envoltorios de IF grandes para verificar la existencia de la column antes de soltarla, simplemente puede ejecutar la instrucción DDL anterior

¿Cómo eliminar una columna de una tabla existente?

Tengo una mesa MEN con Fname y Lname

Necesito quitar el Lname

¿Cómo hacerlo?


Esta es la respuesta correcta:

ALTER TABLE MEN DROP COLUMN Lname

Pero ... si existe una CONSTRAINT en la COLUMN , primero debes DROP la CONSTRAINT , luego podrás DROP la COLUMN . Para soltar un CONSTRAINT , ejecute:

ALTER TABLE MEN DROP CONSTRAINT {constraint_name_on_column_Lname}

Genérico:

ALTER TABLE table_name DROP COLUMN column_name;

En tu caso:

ALTER TABLE MEN DROP COLUMN Lname;

La pregunta es, ¿solo puedes eliminar una columna de una tabla inexistente ;-)

BEGIN TRANSACTION

IF exists (SELECT * FROM  sys.columns c 
INNER JOIN  sys.objects t ON (c.[object_id] = t.[object_id])
WHERE t.[object_id] = OBJECT_ID(N'[dbo].[MyTable]')
AND c.[name] = 'ColumnName')
    BEGIN TRY
        ALTER TABLE [dbo].[MyTable] DROP COLUMN ColumnName
    END TRY
    BEGIN CATCH
        print 'FAILED!'
    END CATCH
ELSE
    BEGIN 
        SELECT ERROR_NUMBER() AS ErrorNumber;
        print 'NO TABLE OR COLUMN FOUND !'
    END 

COMMIT  

Para agregar columnas en la tabla existente:

ALTER TABLE table_name
 ADD
 column_name DATATYPE NULL  

Para eliminar columnas en la tabla existente:

ALTER TABLE table_name
DROP COLUMN column_name

Su ejemplo es simple y no requiere ningún cambio de tabla adicional, pero en general no es tan trivial.

Si otras columnas hacen referencia a esta columna, entonces necesita averiguar qué hacer con otras tablas / columnas. Una opción es eliminar las claves externas y mantener los datos de referencia en otras tablas.

Otra opción es buscar todas las columnas de referencia y eliminarlas también si ya no son necesarias.

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 Red Gate Dependency tracker (premium pero más funciones). Hay un hilo entero en llaves foráneas here





sql-server