Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Adicionar uma coluna com um valor padrão a uma tabela existente no SQL Server

Sintaxe:

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

Exemplo:

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.

Observações:


Nome da restrição opcional:
Se você deixar de fora CONSTRAINT D_SomeTable_SomeCol então o SQL Server irá gerar automaticamente
    uma Default-Contraint com um nome engraçado como:DF__SomeTa__SomeC__4FB7FEF6


Declaração opcional com valores:
O WITH VALUES só é necessário quando sua coluna é anulável
    e você deseja que o valor padrão seja usado para registros existentes.
Se sua coluna for NOT NULL , ele usará automaticamente o valor padrão
    para todos os registros existentes, independentemente de você especificar WITH VALUES ou não.

Como as inserções funcionam com uma restrição padrão:
Se você inserir um registro em SomeTable e não Especifique SomeCol valor de 's, então ele será padrão para 0 .
Se você inserir um registro e Especifique SomeCol valor de 's como NULL (e sua coluna permite valores nulos),
    então a Default-Constraint não ser usado e NULL será inserido como o Valor.


As notas foram baseadas no ótimo feedback de todos abaixo.
Agradecimentos especiais a:
    @Yatrix, @WalterStabosz, @YahooSerious e @StackMan por seus comentários.