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