Scenariusz:
Pracujesz jako programista SQL Server, zostaniesz poproszony o dostarczenie skryptów tworzenia dla tabeli dbo.Customer z unikalnym ograniczeniem w kolumnach Imię i Nazwisko.Rozwiązanie:
Jak wiemy, unikalne ograniczenie w SQL Server jest tworzone na kolumnie lub kolumnach, aby ograniczyć kolumnę/kolumny do akceptowania tylko unikalnych wartości.Poniższy skrypt może być użyty do utworzenia unikalnego ograniczenia na wielu kolumnach w naszym przypadku FirstName i 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') Jeśli zauważyłeś instrukcję INSERT, w First Record umieściłem obie wartości Null dla FirstName i Last Name. W drugim rekordzie użyłem wartości 'Aamir' dla imienia i Null dla nazwiska. W 3 rekordzie i odwrotnie 2 rekordzie. Stąd rozumiemy, że unikatowe ograniczenie działa na obu wartościach kolumn. Dopóki łączna wartość z obu kolumn jest unikalna, pozwoli nam to wstawić nawet jedną z nich jest null.
Jeśli chciałbym wstawić inny rekord, w którym mam Null na nazwisko , pozwoli mi to bez problemu, ponieważ jest unikalny w stosunku do istniejących wartości.
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000') Sprawdźmy rekordy w tabeli za pomocą zapytania wybierającego.
![]() |
| Jak dodać unikalne ograniczenie w wielu kolumnach w tabeli SQL Server |
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000') Msg 2627, poziom 14, stan 1, wiersz 30. Naruszenie ograniczenia UNIQUE KEY „UQ_Dbo_Customer_FName_LName”. Nie można wstawić zduplikowanego klucza w obiekcie „dbo.Customer”. Zduplikowana wartość klucza to (Raza,
Wideo demonstracyjne:Utwórz unikalne ograniczenie dla wielu kolumn w SQL Server
