2008-11-17 12 views
5

Tengo un campo (por ejemplo, foo) en una tabla en una base de datos SQL Server que originalmente se definió como anulable, pero nuevos requisitos indican que este campo debe ser no nulo.Actualizar secuencia de comandos para actualizar un campo de tabla en SQL Server de NULL a no nulo

¿Cuál es la mejor manera de actualizar este campo para que no sea nulo a través de un script de actualización sin eliminar el contenido de la tabla? Intenté generar un script desde la vista Diseño, pero falla durante la ejecución porque el contenido actual de la tabla tenía valores NULL para foo. Peor aún, si ignoré este error, procede a eliminar todos los contenidos de la tabla.

Respuesta

10

Debe establecer un valor para cualquier fila con NULL en la columna habilitada NULL antes de cambiarla a NOT NULL.

-- Clean up the data which won't comply with the schema changes 
UPDATE t SET foo = 0 WHERE foo IS NULL 

-- Apply the NOT NULL 
ALTER TABLE t ALTER COLUMN foo int NOT NULL 

-- Add a default for the future if that's what you want 
ALTER TABLE t ADD CONSTRAINT t_foo_def DEFAULT 0 FOR foo 
0

Puede establecer un valor predeterminado para el campo que no admite nulos. Si desea cambiarlo de anulable a no anulable, debe proporcionar un valor que pueda asignarse a las filas con valor nulo en ese campo.

Cuestiones relacionadas