¿Cómo se puede añadir una columna con un valor por defecto a una tabla existente en SQL Server 2000 / SQL Server 2005?
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
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.
Nombre opcional de la restricción:
Si se omite CONSTRAINT D_SomeTable_SomeCol
entonces SQL Server autogenerará
un Default-Contraint con un nombre divertido como: DF__SomeTa__SomeC__4FB7FEF6
Declaración opcional With-Values:
El WITH VALUES
sólo es necesario cuando su columna es nula
y quiere que se utilice el valor por defecto para los registros existentes.
Si su Columna es NOT NULL
, entonces se utilizará automáticamente el Valor por Defecto
para todos los registros existentes, tanto si se especifica "CON VALORES" como si no.
Cómo funcionan las inserciones con una restricción por defecto:
Si se inserta un registro en una tabla y no se especifica el valor de la columna, entonces el valor por defecto será "0".
Si inserta un registro y especifica el valor de AlgunaCol
como NULL
(y su columna permite nulos),
Entonces la restricción por defecto no se utilizará y se insertará "NULL" como valor.
Las notas se basaron en la gran retroalimentación de todos a continuación.
Gracias especiales a:
@Yatrix, @WalterStabosz, @YahooSerious, y @StackMan por sus comentarios.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
La inclusión del DEFAULT rellena la columna en las filas existentes con el valor por defecto, por lo que no se viola la restricción NOT NULL.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
El artículo de MSDN ALTER TABLE (Transact-SQL) tiene toda la sintaxis de alteración de tablas.