181 votes

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 à la fois le TSQL et comment le faire dans le diagramme de base de données.

273voto

Rory Points 13087

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 Schéma de Base de données:

  • cliquez-droit sur le tableau et sélectionnez " Index/Touches
  • cliquez sur le bouton ajouter pour Ajouter un nouvel index
  • entrez 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)
    • Est Unique à Oui
    • lui donner un nom approprié

84voto

James Lawruk Points 8106

Dans SQL Server Management Studio Express:

  • Cliquez-droit sur le tableau, choisissez Modifier ou de Conception(Pour les Versions Ultérieures)
  • Cliquez-droit sur le champ, choisir les Index et les Clés...
  • Cliquez Sur Ajouter
  • Pour les Colonnes, sélectionnez le nom du champ que vous voulez être unique.
  • Pour Type, sélectionnez la Clé Unique.
  • Cliquez sur Fermer, Enregistrer la table.

29voto

WildJoe Points 2515
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

15voto

Squirrel Points 555

Attention: Une seule ligne null peut être dans la colonne que vous avez définie pour être 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;
 

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

13voto

bosnic Points 534
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X