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