Número de valores nulos que puede tener una clave única

Quiero saber cuántos valores nulos puede tener una clave única en el servidor sql. He leído muchos artículos y cada uno tiene respuestas diferentes, algunos dicen que se aceptan nulos ilimitados y otros dicen que solo se acepta un valor nulo, según yo, solo se acepta un valor nulo, ¿tengo razón o no?

preguntado el 19 de mayo de 14 a las 15:05

He intentado que acepte solo un valor nulo:

@AshU: ¡ahí está tu respuesta! Dado que el índice tiene que ser único, cada valor (y no valor como NULL) puede ocurrir sólo una vez - Eso es todo el punto menos índice único , ¿¿¿No??? -

Es un poco más complicado que eso. En ANSI sql, nulo no es igual a nulo, por lo tanto, muchos nulos pueden ser únicos. Puede CONFIGURAR ANSI_NULLS activado o desactivado. Por defecto está desactivado en MS SQL. Sin embargo, MS ha dicho que en versiones futuras estará activado de forma predeterminada y no podrá desactivarlo. -

@RyanB, ¿podría explicarme con un pequeño ejemplo, cómo puedo insertar más de un valor nulo en mi columna única? -

1 Respuestas

La respuesta es, depende. Hay una forma de crear un índice único que permite múltiples valores nulos en MS SQL Server, pero no es el valor predeterminado. El valor predeterminado en MS es permitir solo un NULL. Pero ese no es el estándar ANSI. Los estándares ANSI 92, 99 y 03 permiten explícitamente múltiples nulos con unívoco.

Las respuestas aquí dan una buena explicación: ¿Cómo creo una restricción única que también permite valores nulos?

ACTUALIZAR con ejemplo: elimine la restricción ÚNICA de la definición de la tabla, luego agregue el índice como este

CREATE UNIQUE NONCLUSTERED INDEX idx_name
ON table_name(column_name)
WHERE column_name IS NOT NULL;

contestado el 23 de mayo de 17 a las 13:05

No puedo entender cómo insertar más de un valor nulo en mi columna única: Ashu

No puede hacerlo con una columna ÚNICA regular. Pero puede crear un ÍNDICE ÚNICO con DONDE la columna NO ES NULA. Eso le permitiría insertar múltiples nulos en la columna. Los valores nulos no se indexarían. - RyanB

¿Podría explicarme con un pequeño ejemplo cómo hacer todo esto? Ashu

También he agregado: establecer ANSI_NULLS en - Ashu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.