Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce qu'une contrainte unique dans SQL Server - Tutoriel SQL Server / TSQL Partie 95

Qu'est-ce qu'une contrainte unique dans SQL Server :

Une contrainte unique dans SQL Server est créée sur une ou plusieurs colonnes pour restreindre la ou les colonnes à n'accepter que des valeurs uniques.
Une seule valeur Null est autorisée dans une colonne sur laquelle une contrainte unique est créée.

Scénario :

Supposons que vous travaillez en tant que développeur SQL Server pour une compagnie d'assurance, il vous est demandé de créer une table dbo.Customer qui doit avoir une colonne SSN et doit toujours accepter des valeurs uniques.


Solution :

Pour le scénario ci-dessus, nous pouvons utiliser la contrainte unique sur la colonne SSN. Le script ci-dessous peut être utilisé pour créer une contrainte unique sur une colonne.
USE [YourDatabaseName]GOCREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar ](50) NULL, [SSN] VARCHAR(11), Unique(SSN)) --Insérer des exemples d'enregistrements dans la table Insérer dans dbo.Customer(FirstName,LastName,SSN)Values('Raza','M',Null) ,('Aamir','Shahzad','000-00-0001'),('Aamir','Shahzad','000-00-0002')
 
 
Vérifiez les données dans la table dbo.Customer en utilisant Select query
Comment ajouter une contrainte unique sur une colonne dans SQL Server

Utilisons les vues système pour vérifier si la contrainte unique est ajoutée et quel nom SQL Server lui a donné.
SELECT *FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='UNIQUE'
 
Comment ajouter une contrainte unique dans SQL Server
 Comme nous pouvons le voir, SQL Server a donné le nom "UQ__Customer__CA1E8E3C7E8AFCB1" à Unique Constraint. Si nous voulons implémenter une convention de dénomination, nous devrions avoir fourni le nom par nous-mêmes.
Si nous essayons d'insérer la valeur qui existe déjà dans la colonne Unique Constraint, nous obtiendrons l'erreur ci-dessous.
Insérer dans dbo.Customer(FirstName,LastName,SSN)Values('Raza','M',Null)
 
 Msg 2627, Niveau 14, État 1, Ligne 11
Violation de la contrainte UNIQUE KEY 'UQ__Customer__CA1E8E3C7E8AFCB1'. Impossible d'insérer la clé en double dans l'objet 'dbo.Customer'. La valeur de clé en double est ().
La déclaration a été terminée.

Si vous souhaitez créer la contrainte unique avec une convention de dénomination, nous pouvons utiliser la syntaxe ci-dessous.

USE [YourDatabaseName]GOCREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Constraint UQ_Dbo_Customer_SSN Unique(SSN)) 
 


Démonstration vidéo :Qu'est-ce qu'une contrainte unique dans SQL Server ?