Créer des contraintes uniques

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed Instance

Vous pouvez créer une contrainte d'unicité dans SQL Server à l'aide de SQL Server Management Studio ou Transact-SQL pour interdire l'entrée de doublons dans des colonnes spécifiques qui ne participent pas à une clé primaire. La création d'une contrainte unique crée automatiquement un index unique correspondant.

Remarque

Pour en savoir plus sur les contraintes d'unicité dans Azure Synapse Analytics, reportez-vous à Clé primaire, clé étrangère et clé unique dans Azure Synapse Analytics.

Autorisations

Requiert une autorisation ALTER sur la table.

Utiliser SQL Server Management Studio (SSMS)

Créer une contrainte d'unicité à l'aide de SSMS

  1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur la table à laquelle vous souhaitez ajouter une contrainte unique, puis sélectionnez Conception.

  2. Dans le menu Concepteur de tables , sélectionnez Index/Clés.

  3. Dans la boîte de dialogue Index/Clés, sélectionnez Ajouter.

  4. Dans la grille sous Général, sélectionnez Type, choisissez Clé unique dans la zone de liste déroulante située à droite de la propriété, puis sélectionnez Fermer.

  5. Dans le menu Fichier, sélectionnez Enregistrer nom_table.

Utiliser Transact-SQL

Créer une contrainte d'unicité à l'aide de Transact-SQL

  1. Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. L'exemple crée la table TransactionHistoryArchive4 et une contrainte unique sur la colonne TransactionID.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive4  
     (  
       TransactionID int NOT NULL,   
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)   
    );   
    GO  
    

Créer une contrainte unique sur une table existante

  1. Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. L'exemple crée une contrainte unique sur les colonnes PasswordHash et PasswordSalt dans la table Person.Password.

    USE AdventureWorks2022;   
    GO  
    ALTER TABLE Person.Password   
    ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);   
    GO  
    
    

Créer une contrainte unique sur une nouvelle table

  1. Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. L'exemple crée une table et définit une contrainte unique sur la colonne TransactionID.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive2  
    (  
       TransactionID int NOT NULL,  
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)  
    );  
    GO  
    

Créer une contrainte unique sur une colonne acceptant les valeurs NULL

  1. Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. L’exemple crée une contrainte unique filtrée à l’aide de la CREATE UNIQUE INDEX syntaxe, en appliquant uniquement l’unicité sur les valeurs autres que les valeurs NULL.

    USE AdventureWorks2022;  
    GO
    CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion
    ON dbo.AdventureWorksDWBuildVersion (DBVersion)
    WHERE (DBVersion IS NOT NULL);
    GO