Scenario:
Du arbetar som SQL Server-utvecklare, du ombeds att tillhandahålla skapa skript för dbo.Kundtabell med Unique Constraint on First Name och Efternamn kolumner.Lösning:
Som vi vet att den unika begränsningen i SQL Server skapas på en kolumn eller kolumner för att begränsa kolumnen/kolumnerna att endast acceptera unika värden.Skriftet nedan kan användas för att skapa unika begränsningar på flera kolumner i vårt fall FirstName och LastName.
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')
Om du har lagt märke till insert-satsen, har jag i First Record lagt både Null-värden för FirstName och Efternamn. I den andra posten använde jag värdet 'Aamir' för förnamn och Null för efternamn. I 3:e rekordet vice versa till 2:a rekordet. Härifrån förstår vi att den unika begränsningen fungerar på båda kolumnvärdena. Så länge det kombinerade värdet från båda kolumnerna är unikt, kommer det att låta oss infoga även en av dem är null.
Om jag skulle vilja infoga en annan post där jag har Null för efternamn , det låter mig utan problem, eftersom det är unikt från befintliga värden.
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza',Null,'000-00-0000')
Låt oss kontrollera posterna i tabellen med hjälp av urvalsfrågan.
Hur man lägger till unika begränsningar på flera kolumner i SQL Server-tabellen |
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza',Null,'000-00-0000')
Medd. 2627, Nivå 14, Tillstånd 1, Rad 30 Brott mot UNIQUE KEY-begränsningen 'UQ_Dbo_Customer_FName_LName'. Kan inte infoga dubblettnyckel i objektet 'dbo.Customer'. Dubblettnyckelvärdet är (Raza,
Videodemo :Skapa unika begränsningar på flera kolumner i SQL Server