Como Añadir una columna con un valor por defecto a una tabla existente en SQL Server

En SQL Server, para añadir una columna con un valor por defecto a una tabla existente utilice ALTER Tabla ADD nombre de la columna con NULL/NOT NULL restricción con DEFAULT valor.

A continuación la sintaxis de consulta sql server se puede utilizar para agregar una columna con el valor predeterminado en la tabla existente.

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

Veamos un ejemplo para entenderlo mejor.

Añadir una columna Non-Nullable con valor por defecto para los registros existentes

Consideremos una tabla Employee en SQL server, y si queremos añadir la columna de salario mínimo con valor por defecto como 1000USD, utilice la siguiente consulta.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL DEFAULT(1000)
GO

La consulta anterior añadirá una nueva columna MINIMUM_WAGE en la tabla Employee y rellena la columna en las filas existentes con el valor por defecto es decir, 1000.

Porque hemos añadido la restricción NOT NULL.

Si no se añade la restricción NOT NULL, todas las filas existentes serán NULL y el valor DEFAULT proporcionado no tendrá ningún impacto.

ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO

Todos los valores de la columna MINIMUM_WAGE serán NULL.

Debe añadir el valor DEFAULT si añade la restricción NOT NULL si la tabla no está vacía.

Por ejemplo, si la tabla Employee no está vacía y añade una nueva columna con la restricción NOT NULL, se producirá un error.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO

La consulta sql server anterior arrojará el siguiente error al añadir una nueva columna a la tabla 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.

Si la tabla Employee está vacía.

La consulta sql server anterior añadirá una nueva columna sin ningún problema.

Añadir una columna Nullable con valor por defecto para registros existentes

Si desea añadir una columna anulable con valor por defecto para los registros existentes, debe utilizar WITH VALUES en la sentencia sql.

ALTER TABLE Employee
ADD MINIMUM_WAGE INT
CONSTRAINT Minimum_Pay DEFAULT 1000 WITH VALUES

La consulta anterior añadirá una columna anulable a la tabla sql server con el valor predeterminado para los registros existentes.

Si este tutorial hemos aprendido a añadir una columna tanto nullable y no nullable colums a la tabla sql server con valor por defecto para todos los registros existentes.