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