sql >> Base de Datos >  >> RDS >> Sqlserver

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

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 omite CONSTRAINT D_SomeTable_SomeCol entonces SQL Server generará automáticamente
    una restricción predeterminada con un nombre gracioso como:DF__SomeTa__SomeC__4FB7FEF6

Declaración opcional con valores:
El WITH VALUES solo se necesita cuando su columna es anulable
    y desea que se use el valor predeterminado para los registros existentes.
Si su columna es NOT NULL , utilizará 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 no Especifique SomeCol 's, entonces se establecerá de forma predeterminada en 0 .
Si inserta un Registro y Especifique SomeCol valor de como 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.
Gracias especiales a:
    @Yatrix, @WalterStabosz, @YahooSerious y @StackMan por sus comentarios.