Scenario:
Stai lavorando come sviluppatore SQL Server, ti viene chiesto di fornire script di creazione per dbo.Tabella cliente con vincolo univoco sulle colonne Nome e Cognome.Soluzione:
Come sappiamo, il vincolo univoco in SQL Server viene creato su una o più colonne per limitare la/e colonna/e ad accettare solo valori univoci.Lo script seguente può essere utilizzato per creare un vincolo univoco su più colonne nel nostro caso Nome e Cognome.
USE [YourDatabaseName]
GO
CREATE TABLE [dbo].[Customer](
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NULL,
[SSN] VARCHAR(11),
Constraint UQ_Dbo_Customer_FName_LName Unique(FirstName,LastName)
)
--Let's insert some sample data to test Unique Constraint
Insert into dbo.Customer(FirstName,LastName,SSN)
Values(Null,Null,'000-00-0000'),
('Aamir',Null,'000-00-0000'),
(Null,'Aamir','000-00-0000')
,('Aamir','Shahzad','000-00-0001')
,('Raza','M','000-00-0002') Se hai notato l'istruzione di inserimento, in First Record ho inserito entrambi i valori Null per FirstName e Last Name. Nel 2° record ho usato il valore 'Aamir' per il nome e Null per il cognome. In 3° record viceversa di 2° record. Da qui ciò che capiamo che il vincolo univoco funziona su entrambi i valori di colonna. Finché il valore combinato di entrambe le colonne è univoco, ci consentirà di inserirne anche uno nullo.
Se desidero inserire un altro record in cui ho Null per cognome , me lo consentirà senza alcun problema, poiché è unico rispetto ai valori esistenti.
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000') Controlliamo i record nella tabella utilizzando select query.
![]() |
| Come aggiungere un vincolo univoco su più colonne nella tabella di SQL Server |
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000') Msg 2627, livello 14, stato 1, riga 30 Violazione del vincolo UNIQUE KEY 'UQ_Dbo_Customer_FName_LName'. Impossibile inserire la chiave duplicata nell'oggetto 'dbo.Customer'. Il valore della chiave duplicata è (Raza,
Video demo:crea vincoli univoci su più colonne in SQL Server
