Créer des contraintes uniques
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Base de données Azure SQL Azure 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
Dans l’Explorateur d’objets, cliquez avec le bouton droit sur la table à laquelle vous souhaitez ajouter une contrainte unique, puis sélectionnez Conception.
Dans le menu Concepteur de tables , sélectionnez Index/Clés.
Dans la boîte de dialogue Index/Clés, sélectionnez Ajouter.
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.
Dans le menu Fichier, sélectionnez Enregistrer nom_table.
Utiliser Transact-SQL
Créer une contrainte d'unicité à l'aide de Transact-SQL
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
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 colonneTransactionID
.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
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
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
etPasswordSalt
dans la tablePerson.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
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
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
Dans l'Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
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 valeursNULL
.USE AdventureWorks2022; GO CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion ON dbo.AdventureWorksDWBuildVersion (DBVersion) WHERE (DBVersion IS NOT NULL); GO