valor tabla por modificar entre eliminar defecto con columnas columna campo agregar sql-server add not-exists

sql-server - tabla - eliminar columna sql



Agregue una columna a una tabla, si aún no existe (5)

/ * PARA VERIFICAR LA EXISTENCIA DE LA COLUMNA EN LA TABLA * /

IF COL_LENGTH(''TABLE_NAME'',''COLUMN_NAME'') IS NULL BEGIN ALTER TABLE .... /*COLUMN DOES NOT EXIST OR CALLER DOES NOT HAVE PERMISSION TO VIEW THE OBJECT*/ END

Quiero escribir una consulta para MS SQL Server que agrega una columna en una tabla. Pero no deseo que se muestre ningún error cuando ejecuto / ejecuto la siguiente consulta.

Estoy usando este tipo de consulta para agregar una tabla ...

IF EXISTS ( SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N''[dbo].[Person]'') AND TYPE IN (N''U'') )

Pero no sé cómo escribir esta consulta para una columna.


Otra alternativa Prefiero este enfoque porque es menos escribir, pero los dos logran lo mismo.

IF COLUMNPROPERTY(OBJECT_ID(''dbo.Person''), ''ColumnName'', ''ColumnId'') IS NULL BEGIN ALTER TABLE Person ADD ColumnName VARCHAR(MAX) NOT NULL END

También noté que el suyo está buscando dónde existe la mesa que obviamente es solo esto

if COLUMNPROPERTY( OBJECT_ID(''dbo.Person''),''ColumnName'',''ColumnId'') is not null


Puede usar una construcción similar utilizando la tabla sys.objects io sys.objects .

IF NOT EXISTS ( SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N''[dbo].[Person]'') AND name = ''ColumnName'' )


IF COL_LENGTH(''table_name'', ''column_name'') IS NULL BEGIN ALTER TABLE table_name ADD [column_name] INT END


IF NOT EXISTS (SELECT 1 FROM SYS.COLUMNS WHERE OBJECT_ID = OBJECT_ID(N''[dbo].[Person]'') AND name = ''DateOfBirth'') BEGIN ALTER TABLE [dbo].[Person] ADD DateOfBirth DATETIME END