Como se pode adicionar uma coluna com um valor padrão a uma tabela existente em 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.
Nome da Restrição Opcional:br />
Se você deixar de fora CONSTRAINT D_SomeTable_SomeCol
então o SQL Server irá autogerar
um contrato por defeito com um nome engraçado como: DF__SomeTa__SomeC__4FB7FEF6
Declaração Opcional com Valores:
O 'COM VALORES' só é necessário quando a sua coluna é Nullable
e você quer o Valor Padrão usado para os Registros Existentes.
Se a sua coluna for 'NÃO NULL', então ela utilizará automaticamente o valor padrão
para todos os Registros Existentes, se você especifica "COM VALORES" ou não.
Como funciona o Inserts com uma restrição por defeito**br />
Se você inserir um registro em SomeTable
e fizer *not*** Especifique o valor de SomeCol
, então o valor padrão será 0
.
Se você inserir um registro e* Especifique o valor SomeCol
como NULL
(e sua coluna permite nulos),
depois será utilizada a restrição por defeito não**** e NULL
será inserida como o Valor.
As notas foram baseadas no grande feedback de todos abaixo.
Agradecimentos especiais a:
@Yatrix, @WalterStabosz, @YahooSerious, e @StackMan pelos seus Comentários.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
A inclusão do **DEFAULT* preenche a coluna em linhas existentes** com o valor padrão, de modo que a restrição NOT NULL não seja violada.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
O artigo MSDN ALTER TABLE (Transact-SQL) tem toda a sintaxe da tabela de alterações.