Agregar un valor por defecto en SQL Server

Supongamos que queremos modificar una columna existente en una tabla que tenemos creada en nuestra base de datos SQL Server 2008 R2, queremos modificarla para hacerla NO NULL y agregarle un valor por defecto, la solución que me ha funcionado en un poco rara y compleja pues consta de 3 consultas, pero a fin de cuentas me ha funcionado.

Como modificar una columna de una tabla y agregarle un valor por defecto (default)

USE databaseName
GO

UPDATE tableName set columnName = defaultValue where columnName IS NULL;
GO

ALTER TABLE tableName ALTER COLUMN columnName dataType NOT NULL;
GO

ALTER TABLE tableName ADD CONSTRAINT constraintName DEFAULT defaultValue FOR columnName;
GO

Lo que hago para modificar una columna de una tabla y agregarle un valor por defecto son tres sencillos pasos:

  1. rellenar el campo de la tabla para los valores que son nulos con el valor por defecto
  2. modificar esta columna y decirle que va a ser no nula
  3. agregar la constante que se encarga de supervisar y de agregar el valor por defecto en esta columna

Veamos un ejemplo práctico para ver la sintaxis:

USE pruebas
GO

UPDATE historico set activo = 0 where activo IS NULL;
GO

ALTER TABLE historico ALTER COLUMN activo BIT NOT NULL;
GO

ALTER TABLE historico ADD CONSTRAINT DF_historico_activo DEFAULT 0 FOR activo;
GO

¿Alguna vía más fácil para hacer una columna existente NO NULL y agregarle un valor DEFAULT en SQL Server?

Comentarios