web-dev-qa-db-fra.com

SQL Server 2005 Comment créer une contrainte unique?

Comment créer une contrainte unique sur une table existante dans SQL Server 2005?

Je cherche le TSQL et comment le faire dans le diagramme de base de données.

180
David Basarab

La commande SQL est:

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

Voir la syntaxe complète ici .

Si vous voulez le faire à partir d'un diagramme de base de données:

  • faites un clic droit sur la table et sélectionnez "Index/Clés"
  • cliquez sur le bouton Ajouter pour ajouter un nouvel index
  • entrez les informations nécessaires dans les propriétés à droite:
    • les colonnes que vous voulez (cliquez sur le bouton Ellipsis pour sélectionner)
    • set is Unique to Yes
    • lui donner un nom approprié
272
Rory

Dans SQL Server Management Studio Express:

  • Cliquez avec le bouton droit sur le tableau, choisissez Modifier ou Conception (pour les versions ultérieures)
  • Cliquez avec le bouton droit sur le champ, choisissez Index/Keys ...
  • Cliquez sur Ajouter
  • Pour Colonnes , sélectionnez le nom du champvous voulez être unique.
  • Pour Type , choisissez Clé unique .
  • Cliquez sur Fermer , Enregistrer la table.
84
James Lawruk
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
28
WildJoe

Avertissement: Une seule ligne nulle peut figurer dans la colonne que vous avez définie comme unique.

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

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

Voir La valeur du champ doit être unique sauf si elle est NULL pour une plage de réponses.

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

J'ai aussi découvert que vous pouviez le faire via les diagrammes de base de données.

En faisant un clic droit sur la table et en sélectionnant Index/Touches ...

Cliquez sur le bouton 'Ajouter' et changez les colonnes en colonnes que vous souhaitez rendre uniques.

Le changement est unique à Oui.

Cliquez sur Fermer et enregistrez le diagramme. Il sera ajouté au tableau.

10
David Basarab

Vous cherchez quelque chose comme ce qui suit

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN Docs

8
Thunder3

Pour créer une contrainte UNIQUE sur une ou plusieurs colonnes lorsque la table est déjà créée, utilisez le code SQL suivant:

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

Pour autoriser le nommage d'une contrainte UNIQUE pour la requête précédente

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

La requête supportée par MySQL/SQL Server/Oracle/MS Access.

6
Rafiq

Dans le diagramme du studio de gestion, choisissez la table, cliquez avec le bouton droit de la souris pour ajouter une nouvelle colonne, cliquez dessus avec le bouton droit de la souris et choisissez "Vérifier les contraintes". Vous pouvez en ajouter une.

5
Gibbons

Dans certaines situations, il peut être souhaitable de s’assurer que la clé Unique n’existe pas avant de la créer. Dans ce cas, le script ci-dessous peut vous aider:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
0
Mario Vázquez