2011-09-23 10 views
15

tengo una tabla creada como esto originalmente:¿Hay alguna razón para especificar DEFAULT (NULL) en una columna que admite valores NULL?

CREATE TABLE dbo.XX (
YY int DEFAULT(NULL) 
) 

Si lo hace, y luego la escritura de la tabla más adelante, obtendrá el siguiente código, además de una restricción predeterminada de nombre aleatorio:

CREATE TABLE [dbo].XX([YY] [int] NULL) 
GO 
ALTER TABLE [dbo].XX ADD DEFAULT (NULL) FOR [YY] 
GO 

Ahora, ¿hay algún punto real al especificar DEFAULT (NULL) en una columna en lugar de simplemente dejarlo como [YY] [int] NULL en primer lugar?

+0

No tiene sentido en ninguna base de datos con la que esté familiarizado. –

+11

Pensándolo bien, aunque no cambia la forma en que se agregarán los datos, supongo que podría considerarse una expresión del intento de diseño ("Tengo la intención de agregar esta columna como NULL, no me olvidé de establecer un predeterminado ") que hace que el diseño de la base de datos sea más claro para la siguiente persona que aparezca. –

+0

Pregunta siguiente (relacionada): ¿hay alguna pinta para especificar 'NULL' en una columna en lugar de simplemente dejarla como' [yy] [INTEGER] 'en primer lugar? – onedaywhen

Respuesta

16

No es necesario agregar un DEFAULT(NULL) a columnas que aceptan nulos.

Si los datos no se suministran a tales columnas, tendrán un NULL.

El único beneficio que veo es el que Larry Lustig ha publicado en su comentario a la pregunta: documenta el hecho de que no ha olvidado agregar un valor predeterminado a la columna que admite nulos.

+0

La restricción predeterminada debe soltarse primero antes de que se elimine la columna – Helic

6

Nada que se me ocurra.

INSERT INTO [dbo].XX([YY]) VALUES (DEFAULT) 

INSERT INTO [dbo].XX([YY]) DEFAULT VALUES 

Funciona de la misma manera.

Cuestiones relacionadas