2008-09-15 10 views

Respuesta

270

El comando SQL es:

ALTER TABLE <tablename> ADD CONSTRAINT 
      <constraintname> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) 

Véase la sintaxis completa here.

Si desea hacerlo desde un diagrama de base de datos:

  • haga clic derecho en la tabla y seleccione "Índices/Keys
  • haga clic en el botón Añadir para añadir un nuevo índice
  • entrar la información necesaria en los establecimientos en la parte de la derecha:
    • las columnas que desee (haga clic en el botón de puntos suspensivos para seleccionar)
    • conjunto es aplicable sólo a Sí
    • darle un nombre apropiado
+0

Funciona ... pero ... ¿por qué la restricción es mostrado en la carpeta INDEX en lugar de la carpeta RESTRICCIONES. Se muestra con otro icono, pero de todos modos debería estar en la carpeta de restricciones. –

13
ALTER TABLE dbo.<tablename> ADD CONSTRAINT 
      <namingconventionconstraint> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) ON [PRIMARY] 
8

Usted está buscando algo como lo siguiente

ALTER TABLE dbo.doc_exz 
ADD CONSTRAINT col_b_def 
UNIQUE column_b 

MSDN Docs

5

En el diagrama estudio de gestión de elegir la tabla, haga clic derecho para añadir nueva columna, si lo desea, haga clic en el columna y elija "Comprobar restricciones", allí puede agregar una.

10

También encontré que puede hacerlo a través de los diagramas de la base de datos.

haciendo clic derecho en la tabla y seleccionando índices/Keys ...

Haga clic en el botón 'Añadir', y cambiar las columnas a la columna (s) que desea hacer único.

El cambio es exclusivo de Sí.

Haga clic en cerrar y guarde el diagrama y lo agregará a la tabla.

27
ALTER TABLE [TableName] ADD CONSTRAINT [constraintName] UNIQUE ([columns]) 
15

Advertencia: Sólo una fila nula puede estar en la columna que haya configurado para ser único.

Usted puede hacer esto con un índice filtrado en SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1 
ON dbo.MyTable(col1) 
WHERE col1 IS NOT NULL; 

Ver Field value must be unique unless it is NULL para una gama de respuestas.

+0

¿cómo se hace esto en sql server 2005? – Maxrunner

+2

No es posible en el servidor sql 2005. Recomiendo encarecidamente actualizar a un RDBMS más actualizado; será [oficialmente no admitido] (http://blogs.msdn.com/b/sqlreleaseservices/archive/2011/ 01/27/end-of-mainstream-support-for-sql-server-2005-and-end-of-service-pack-support-for-sql-server-2008-sp1.aspx) desde el 12 de abril de 2016. – reedstonefood

84

En SQL Server Management Studio Express:

  • tabla botón derecho del ratón, elija Modificar o Diseño (versiones posteriores)
  • campo botón derecho, elija Índices/teclas .. .
  • Haga clic Añadir
  • Para Columnas, seleccione nombre de campo que desea que sea único.
  • Para Tipo, elija Llave única.
  • Haga clic en Cerrar, Guardar la tabla.
6

Para crear una restricción UNIQUE en una o varias columnas cuando la mesa ya está creado, utilice el siguiente código SQL:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...) 

Para permitir la designación de una restricción UNIQUE para la consulta anterior

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...) 

La consulta es compatible con MySQL/SQL Server/Oracle/MS Access.

+0

'ÚNICA NOCLUSTA 'y *** opciones ***' PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON'? – Kiquenet

Cuestiones relacionadas