En créant un UNIQUE contrainte, les administrateurs SQL Server spécifient qu'une colonne de base de données ne peut pas contenir de valeurs en double. Lorsque vous créez un nouveau UNIQUE contrainte, SQL Server vérifie la colonne en question pour déterminer si elle contient des valeurs en double. Si la tableau contient des doublons, la commande de création de contrainte échoue. De même, après avoir défini une contrainte UNIQUE sur une colonne, les tentatives d'ajout ou de modification de données qui entraîneraient l'existence de doublons échouent également.
Pourquoi utiliser des contraintes UNIQUES
Une contrainte UNIQUE et une clé primaire imposent toutes deux l'unicité, mais il arrive parfois qu'une contrainte UNIQUE soit le meilleur choix.
- Utilisez une contrainte UNIQUE pour spécifier plusieurs contraintes à une table. Vous ne pouvez attacher qu'une seule clé primaire à une table.
- Utilisez une contrainte UNIQUE lorsqu'une colonne autorise les valeurs NULL. Les contraintes de clé primaire ne peuvent être attachées qu'aux colonnes qui n'autorisent pas les valeurs NULL.
Création d'une contrainte UNIQUE
Le moyen le plus simple de créer une contrainte unique dans Transact-SQL consiste à se connecter à un moteur de base de données dans l'Explorateur d'objets dans SQL Management Studio, puis à cliquer sur Nouvelle requête.
Utilisez la requête suivante, en modifiant les termes si nécessaire, pour créer une nouvelle table et ajouter une contrainte sur une colonne:
UTILISER AdventureWorks2012;
VA
CRÉER UN TABLEAU Production. TransactionHistoriqueArchive4
(
TransactionID entier NON NULL,
CONTRAINTE AK_TransactionID UNIQUE(TransactionID)
);
VA.
Exécutez la requête.
De même, pour créer une contrainte unique sur une table existante, exécutez la requête T-SQL suivante:
UTILISER AdventureWorks2012;
VA
ALTER TABLE Personne. Mot de passe
AJOUTER UNE CONTRAINTE AK_Password UNIQUE (PasswordHash, PasswordSalt);
VA.
Contraintes UNIQUES vs. Index UNIQUES
Il y a eu une certaine confusion sur la différence entre une contrainte UNIQUE et un index UNIQUE. Bien que vous puissiez utiliser différentes commandes T-SQL pour les créer (ALTER TABLE et ADD CONSTRAINT pour les contraintes et CREATE UNIQUE INDEX pour les index), elles ont pour la plupart le même effet. En fait, lorsque vous créez une contrainte UNIQUE, cela crée en fait un index UNIQUE sur la table. Notez cependant quelques différences:
- Lorsque vous créez un index, vous pouvez ajouter des options supplémentaires à la commande de création.
- Une colonne soumise à une contrainte UNIQUE peut être utilisée comme clé étrangère.