2009-10-19 22 views
33

Tengo una tabla simple en mi base de datos de SQL Server. Esta tabla contiene dos columnas: ID int, Name nvarchar(50). La columna ID es la clave principal para mi tabla.¿Cómo hacer la columna "Sin duplicados" en SQL Server 2008?

Quiero que la columna "Name" sea "(No Duplicates)", como en Microsoft Access, pero esta columna no es la columna principal. ¿Cómo podría hacer esto?

+3

Por favor, no deshacer los cambios a las etiquetas - Esta pregunta no es acerca de Microsoft Access, sino restricciones únicas en SQL Server. –

Respuesta

78

Añadir un unique constraint para esa columna:

ALTER TABLE Foo ADD CONSTRAINT UQ_Name UNIQUE (Name) 

para agregarlo a través de la interfaz de usuario de SQL Management Studio:

  1. Abra SQL Server Management Studio.
  2. Expande la carpeta Tablas de la base de datos donde deseas crear la restricción.
  3. Haga clic en la tabla en la que desea añadir la restricción y haga clic en Diseño .
  4. En el Diseñador de tablas, haga clic en Índices/claves.
  5. Haga clic en Agregar.
  6. Elija clave única en la lista desplegable Tipo.

Para manejar una situación en la que se produce una violación de restricción única, ver para error 2601.

+1

el enlace es para Sql Server 2000 y las instrucciones para SSMS no son aplicables a la última versión por lo que puedo ver. – nycdan

+0

+1 para la solución. He hecho lo mismo y no puedo insertar el valor duplicado. Pero los valores clave primarios están perdiendo en cada intento ... quiero decir si mi PK es 1 y estoy tratando de insertar un valor duplicado dos veces. La próxima actualización correcta será de PK 4. ¿Cómo puedo evitarlo? – rinuthomaz

+0

Prefiero esta respuesta a la solución GUI que publiqué porque es mucho más simple y rápida, pero la publiqué de todos modos para aquellos que tienen una fuerte preferencia de GUI. –

7

Esto también se puede hacer de otra manera con el SSMS interfaz gráfica de usuario, si lo prefiere:

  1. Haga clic en "Índices" debajo de la 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 hace el script SQL ADD CONSTRAINT.

enter image description here

  1. Dar un nombre nuevo índice (p.ej. "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
Cuestiones relacionadas