Como adicionar uma coluna com um valor padrão a uma tabela existente no SQL Server
No servidor SQL, para adicionar uma coluna com um valor padrão a uma tabela existente, use ALTER
Tabela ADD
nome da coluna com a restrição NULL/NOT NULL
com o valor DEFAULT
.
Abaixo da sintaxe de consulta do servidor sql pode ser usada para adicionar uma coluna com o valor padrão na tabela existente.
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Vamos passar por um exemplo para entendê-lo melhor.
Acréscimo de uma coluna Não-Nulável com valor padrão para registros existentes
Considere uma tabela Employee
no servidor SQL, e se quisermos adicionar uma coluna de salário mínimo com valor padrão como 1000USD
, use a consulta abaixo.
ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL DEFAULT(1000)
GO
A consulta acima adicionará uma nova coluna MINIMUM_WAGE
na tabela Employee
e preencherá a coluna nas linhas existentes com o valor padrão, ou seja, 1000
.
Porque acrescentamos NOT NULL
restrição.
Se você não adicionar a restrição NOT NULL
, todas as linhas existentes serão NULL
e o valor DEFAULT
fornecido não terá impacto.
ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO
Todos os valores da coluna MINIMUM_WAGE
serão NULL
.
Você precisa adicionar o valor DEFAULT
se você acrescentar a restrição NOT NULL
se a tabela não estiver vazia.
Por exemplo, se a tabela Employee
não estiver vazia, e se você adicionar uma nova coluna com NOT NULL
constrangimento, ela lançará erro.
ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO
A consulta do servidor sql acima lançará o erro abaixo enquanto adiciona uma nova coluna à tabela existente.
ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'MINIMUM_WAGE' cannot be added to non-empty table 'Employee' because it does not satisfy these conditions.
Se a tabela Employee
estiver vazia.
A consulta do servidor sql acima adicionará uma nova coluna sem nenhum problema.
Adicionando uma coluna Nullable com valor padrão para registros existentes
Se você quiser adicionar uma coluna nula com valor padrão para registros existentes, você precisa usar WITH VALUES
na declaração sql.
ALTER TABLE Employee
ADD MINIMUM_WAGE INT
CONSTRAINT Minimum_Pay DEFAULT 1000 WITH VALUES
A consulta acima adicionará uma coluna nula à tabela do servidor sql com o valor padrão para os registros existentes.
Se este tutorial aprendemos a adicionar uma coluna tanto de colunas nulas como não nulas à tabela do servidor sql com valor padrão para todos os registros existentes.