studio restriccion quitar management indexes ejemplos constraint column check sql-server database

sql server - restriccion - ¿Cuál es la diferencia entre Unique Key e Index con IsUnique=Yes?



sql server indexes (5)

índices únicos son claves únicas.

Tengo una tabla con una clave principal, pero quiero que se restrinjan otras dos columnas, por lo que se garantiza que la combinación de ambas siempre será única.

(Un ejemplo tonto: en una tabla de LIBROS, la columna IBAN es la clave principal, pero la combinación de las columnas Título y Autor también debe ser siempre única).

En SQL Server Management Studio, es posible crear un nuevo índice y establecer IsUnique en Sí, o puedo crear una nueva clave única.

¿Cuál es la diferencia entre los dos enfoques, y cuál se adapta mejor para qué fines?


Crear una restricción ÚNICA es una declaración más clara de la regla. El atributo IsUnique del índice es un detalle de implementación: cómo se implementa la regla, no cuál es la regla. El efecto es el mismo sin embargo.


Hay una clara diferencia entre los 2. Una restricción única define qué combinación de columnas tiene que ser única. Un índice único es solo una forma de asegurarse de que lo anterior sea siempre válido. Pero es posible tener un índice no exclusivo que soporte una restricción única. (si la restricción es deferable = Solo tiene que ser válida en el momento de la confirmación, pero se puede interrumpir en el medio de una transacción)


Solo para que sepas, cuando crees una restricción única, SQL Server creará un índice detrás de las escenas


Una cosa que acabo de descubrir de la manera más difícil es que en el script SSMS de claves únicas se estableció en true de forma predeterminada, pero la creación de scripts de índices se estableció en False. Cuando utilicé el menú de contexto de la tabla de scripts como SSMS, no obtuve mis índices únicos.

Además, si el tipo está configurado en clave única, no puede cambiar la configuración "Ignorar clave duplicada". Primero debe cambiar el tipo de clave única a índice, luego puede configurar Ignorar claves duplicadas en verdadero.