Agregar un valor por defecto en SQL Server

sql_server_2008_r2_smallSupongamos 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 <database_name>
GO

UPDATE <table name> set <column name> = <default value> where <column name> IS NULL;
GO

ALTER TABLE <table name> ALTER COLUMN <column name> <data type> NOT NULL;
GO

ALTER TABLE <table name> ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <column name>;
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