2010-12-20 13 views

Respuesta

14

Agregar un índice único a la columna Descripción.

Usando Sql Server Management Studio, haga clic derecho en la tabla y elija Diseño. A continuación, haga clic derecho en una columna y seleccione "Índices/claves". Se le pedirá la siguiente ventana

alt text

Haga clic en Añadir en la parte inferior izquierda y luego especificar propiedades de su índice. Si desea utilizar un script DDL a continuación, utilizar algo como esto

CREATE UNIQUE NONCLUSTERED INDEX [IX_INDEXNAME] ON [dbo].[TABLENAME] 
(
    [Description] ASC 
) 
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 
+3

Sugiero usar una restricción de exclusividad en lugar de un índice. La sintaxis de restricción es la forma más convencional de implementar restricciones clave. A diferencia de la sintaxis del índice, las restricciones son SQL estándar y es más probable que sean entendidas y reconocidas por otros usuarios de la base de datos y por herramientas de software que acceden a los metadatos del esquema db.Una restricción de exclusividad crea automáticamente un índice para usted. – sqlvogel

+2

También sugiero que siempre debe hacer esto (y cualquier otro cambio de DDL) en la secuencia de comandos, para que puedan ser adecuadamente versionadas y almacenadas en su sistema de control de soruce. Los cambios en la base de datos nunca deberían realizarse desde la GUI de Management Studio. – HLGEM

+0

Cuando intento "Agregar" un elemento y hago clic en Columnas debajo (General) solo me da la opción de seleccionar mi columna "id" y no me deja (ni siquiera se muestra) la columna "Cadena" en el menú desplegable desplegable desplegable. Solo tengo dos columnas, una es una identificación, la otra solo una columna de texto donde cada elemento debe ser único. ¿Por qué no me permite seleccionar la columna basada en texto en la sección de índices/claves cuando hago clic en agregar y voy a la columna? –

21

No existe la 'clave primaria secundaria'. Hay una clave principal por tabla.

Crear una UNIQUE constraint en la columna de la Description (cosa muy poco habitual que ver, por cierto. Por ejemplo, es más habitual para crear un índice único en Product Name en lugar de un Product description) o si tiene valores nulos en la columna de la Description crear un Filtered index (SQL Server 2008 en adelante)

ALTER TABLE dbo.yourTable 
    ADD CONSTRAINT UQ_yourTable_Description UNIQUE ([Description]); 
0

Hay otra manera de hacer esto con los SSMS interfaz gráfica de usuario, si lo prefiere:

he reemplazado la columna de la Description con el nombre MyUniqueColumn por el bien del ejemplo.

  1. click derecho "Índices" en virtud de su mesa en el SSMS Explorador de soluciones y haga clic en "Nuevo Índice ..." (sé que busca crear un contstraint, no un índice, pero esto es exactamente lo que el ADD CONSTRAINT secuencia de comandos SQL hace.

enter image description here

  1. Dar nuevo índice de un nombre (por ejemplo, "UQ_MyUniqueColumn"), marque "único", y haga clic en "Añadir ..."

enter image description here

  1. Compruebe su columna en la siguiente ventana

enter image description here

  1. Haga clic en Aceptar en ambas ventanas
+0

No puedo ver imágenes (los bloques de mi empresa de firewall). ¿Es posible *** texto transcrito en imágenes a texto (SQL) ***? – Kiquenet

+0

@Kiquenet Las imágenes son solo capturas de pantalla de los pasos numerados. Avíseme si no puede seguir ninguno de los pasos y agregaré más texto. –

Cuestiones relacionadas