2009-12-22 14 views

Respuesta

41

Se podría añadir la columna y proporcionar el valor por defecto que se utilizará para todos los existentes filas

ALTER TABLE foo 
ADD bar bit 
DEFAULT 0 NOT NULL; 
+4

Normalmente me gusta NAME mi restricción, incluso las restricciones predeterminadas, en caso de que necesite soltarlas más adelante. Los nombres predeterminados de "DF__TimeZones__IsUsa__3D5E1FD2" son un poco difíciles de recordar ..... –

0

También lo he hecho como dices "créalo como anulable, haz un inserto que lo cambies no se puede nulos". No he tenido problemas para hacerlo de esta manera.

todavía no he necesitado para encontrar una mejor manera, sin embargo, estoy intrigado si hay otra manera ....

0

Por lo general crear el campo como anulable con un defecto como falsa en su caso actualizar todos los campos que estaban en la base de datos antes y luego cambiar a NULL

1
ALTER TABLE dbo.MyTable ADD MyColumn bit NOT NULL DEFAULT 0 

Por lo que vale la pena, puede iniciar Enterprise Manager, realizar los cambios en la interfaz de usuario y luego generar un script de cambio, y puede ver cómo se llevaría a cabo este tipo de tareas.

3
ALTER TABLE foo ADD bar bit DEFAULT 0 NOT NULL WITH VALUES; 

La cláusula "con valores" propicia el valor predeterminado en las filas existentes.

+1

@marc_s, simplemente lo ejecuté sin "CON VALORES" para mi columna de bit y funcionó. ¿Estás seguro? – KingNestor

+1

@KingNestor, pruébalo con un valor predeterminado de 1, o algo que no sea todos los ceros binarios. –

+4

WITH VALUES se usa en el caso de una columna NULLABLE y desea que se use el valor predeterminado en lugar de NULL. –

1

Como alternativa a las respuestas enumeradas, hay otra sintaxis disponible que puede ser mejor para algunas personas, por ejemplo, si usa herramientas como 'ReadyRoll'.

ALTER TABLE [dbo].[FOO] ADD BAR bit NOT NULL CONSTRAINT [df_Bar] DEFAULT 0 

Salida this SO answer para ver qué nombrar a sus limitaciones (la df_Bar arriba) es agradable.

Cuestiones relacionadas