2008-09-15 12 views

Répondre

270

La commande SQL est:

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

Voir la syntaxe complète here.

Si vous voulez le faire à partir d'une base de données Schéma:

  • clic droit sur la table et sélectionnez « Index/Clés »
  • cliquez sur le bouton Ajouter pour ajouter un nouvel index
  • entrer les informations nécessaires dans les propriétés sur le côté droit:
    • les colonnes que vous souhaitez (cliquez sur le bouton de sélection pour sélectionner)
    • jeu est unique sur Oui
    • lui donner un nom approprié
+0

Cela fonctionne ... mais ... pourquoi la contrainte est affiché sous le dossier INDEX à la place du dossier CONSTRAINTS. Il est montré avec une autre icône, mais de toute façon il devrait être dans le dossier des contraintes. –

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

Vous cherchez quelque chose comme

ALTER TABLE dbo.doc_exz 
ADD CONSTRAINT col_b_def 
UNIQUE column_b 

MSDN Docs

5

Dans le diagramme studio de gestion choisir la table, cliquez droit pour ajouter une nouvelle colonne si vous le désirez, faites un clic droit sur la colonne et choisissez "Vérifier les contraintes", vous pouvez en ajouter un.

10

J'ai également trouvé que vous pouvez le faire via, les diagrammes de base de données.

En cliquant sur la table droite et en sélectionnant Index/Clés ...

Cliquez sur le bouton « Ajouter », et modifier les colonnes à la colonne (s) que vous souhaitez faire unique.

La modification est unique à Oui.

Cliquez sur le bouton de fermeture et enregistrez le diagramme pour l'ajouter à la table.

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

Attention: Une seule ligne NULL peut être dans la colonne que vous avez défini pour être unique.

Vous pouvez faire cela avec un index filtré dans SQL 2008:

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

Voir Field value must be unique unless it is NULL pour une gamme de réponses.

+0

comment faites-vous cela dans le serveur sql 2005? – Maxrunner

+2

Ce n'est pas réalisable en SQL Server 2005. Je recommande fortement de mettre à jour vers un RDBMS plus à jour - il sera [officiellement non supporté] (http://blogs.msdn.com/b/sqlreleaseservices/archive/2011/ 01/27/fin-de-support-principal-pour-sql-server-2005-et-fin-de-service-pack-support-pour-sql-server-2008-sp1.aspx) à partir du 12 avril 2016. – reedstonefood

84

Dans SQL Server Management Studio Express:

  • Table droit de la souris, choisissez Modifier ou Design (pour les versions ultérieures)
  • champ Clic droit, choisissez Index/Clés .. .
  • Cliquez Ajouter
  • Pour Colonnes, sélectionnez le nom du champ vous voulez être unique.
  • Pour Type, sélectionnez Clé unique.
  • Cliquez sur Fermez, Enregistrez le tableau.
6

Pour créer une contrainte UNIQUE sur une ou plusieurs colonnes lorsque la table est déjà créé, utilisez l'instruction SQL suivante:

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

Pour permettre la dénomination d'une contrainte unique pour la requête ci-dessus

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

La requête prise en charge par MySQL/SQL Server/Oracle/MS Access.

+0

Options UNIQUE NON CLUSTERED et *** *** 'PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON'? – Kiquenet

Questions connexes