¿Qué es este icono de llave plateada al revés?

11

Heredé un servidor y una base de datos de terceros de SQL Server 2005 para investigar y poder generar informes y paneles.

En una mesa, encontré un nuevo ícono: una tecla invertida azul-plateada, junto con mis otras teclas primarias y externas.

Cuando hago clic con el botón derecho en él, el menú contextual me da la opción de "Restricción de script como", pero cuando trato de "Modificarlo", abre el formulario de diseño de la columna (como las teclas principales) y, sin embargo, aparece en el Sección "Índices", no restricciones.

¿Alguien sabe cómo se llama y para qué se utiliza?

Tecla al revés

Philippe
fuente

Respuestas:

12

Significa una restricción única. En SQL Server, una restricción única se implementa realmente como un índice debajo de las cubiertas; esta es la razón por la que también aparece debajo del Indexesnodo (no puedo darle una buena explicación de por qué no aparece al menos en el Constraintsnodo, ni por qué eligieron una tecla invertida en lugar de solo un color diferente).

Debería ver un resultado aquí para validar que esto realmente se implementa como un índice:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';

Dijiste que viste "Restricción de script como ...": si lo seguías, te habría proporcionado un script como:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)

Pero no lo ejecute porque esta sintaxis no usa un nombre y solo creará una segunda restricción única redundante ...

Aquí hay una reproducción muy simple y una prueba de que obtengo la clave invertida incluso con una sintaxis muy básica, en 2014:

CREATE TABLE dbo.foo(id INT UNIQUE);

ingrese la descripción de la imagen aquí Click para agrandar

Ahora, puede obtener un icono diferente si crea un índice único explícitamente (y las únicas diferencias que verá en sys.indexesson el nombre y el valor de is_unique_constraint):

ingrese la descripción de la imagen aquí Click para agrandar

Para otras diferencias, vea esta respuesta de desbordamiento de pila .

Aaron Bertrand
fuente
1
¿Es específico de SQL2005? Porque cuando trato de agregar un índice ÚNICO, obtengo un ícono diferente (algún tipo de árbol invertido). Y cuando agrego una restricción, obtengo algún tipo de icono de tabla entre corchetes. Parece que no puedo reproducir este icono.
Philippe
@Philippe Respuesta actualizada.
Aaron Bertrand
Gracias. ¡Esa fue una explicación detallada y rápida! :-)
Philippe