Pregunta Agregue una columna con un valor predeterminado a una tabla existente en SQL Server


¿Cómo se puede agregar una columna con un valor predeterminado a una tabla existente en SQL Server 2000 / SQL Server 2005?


2291
2017-09-18 12:30


origen


Respuestas:


Sintaxis:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Ejemplo:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

Notas:

Nombre de Restricción Opcional:
Si lo dejas fuera CONSTRAINT D_SomeTable_SomeCol entonces SQL Server se autogenerará
un Default-Contraint con un nombre divertido como: DF__SomeTa__SomeC__4FB7FEF6

Declaración opcional con valores:
los WITH VALUES solo es necesario cuando tu columna es nulable
y desea que se use el valor predeterminado para los registros existentes.
Si tu columna es NOT NULL, entonces usará automáticamente el valor predeterminado
para todos los registros existentes, ya sea que especifique WITH VALUES o no.

Cómo funcionan las inserciones con una restricción predeterminada:
Si inserta un registro en SomeTable y hacer no Especificar SomeColvalor de, entonces será predeterminado para 0.
Si inserta un registro y Especificar SomeColvalor de NULL (y su columna permite nulos),
entonces la Restricción Predeterminada no ser usado y NULL se insertará como el valor.

Las notas se basaron en los excelentes comentarios de todos a continuación.
Agradecimientos especiales a:
@Yatrix, @WalterStabosz, @YahooSerious y @StackMan por sus comentarios.


2917
2017-09-18 12:34



ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

La inclusión de la DEFECTO llena la columna en existente filas con el valor predeterminado, por lo que no se infringe la restricción NOT NULL.


868
2017-09-18 12:31



Al agregar un columna anulable, WITH VALUES se asegurará de que el valor DEFAULT específico se aplique a las filas existentes:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES

196
2018-04-12 17:40



ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO

115
2017-09-18 12:39



ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'

104
2017-08-05 03:28



Tenga cuidado cuando la columna que está agregando tiene un NOT NULL restricción, aún no tiene una DEFAULT restricción (valor). los ALTER TABLE La declaración fallará en ese caso si la tabla tiene filas. La solución es eliminar el NOT NULL restricción de la nueva columna, o proporcionar un DEFAULT restricción para ello.


84
2017-09-24 16:03



La versión más básica con solo dos líneas

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

78
2018-05-25 14:50



Utilizar:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 

64
2017-12-09 17:45



Si desea agregar varias columnas, puede hacerlo de esta manera, por ejemplo:

ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO

55
2017-10-14 18:38



Utilizar:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

Referencia: ALTER TABLE (Transact-SQL) (MSDN)


44
2017-12-27 02:44