Co to jest unikatowe ograniczenie w SQL Server:
Unikalne ograniczenie w SQL Server jest tworzone na kolumnie lub kolumnach, aby ograniczyć kolumny do akceptowania tylko unikalnych wartości.Tylko pojedyncza wartość Null jest dozwolona w kolumnie, w której tworzone jest unikatowe ograniczenie.
Scenariusz:
Załóżmy, że pracujesz jako programista SQL Server dla firmy ubezpieczeniowej, zostaniesz poproszony o utworzenie tabeli dbo.Customer, która powinna mieć kolumnę SSN i zawsze powinna akceptować wartości Unique.Rozwiązanie:
W powyższym scenariuszu możemy użyć unikalnego ograniczenia w kolumnie SSN. Poniższy skrypt może zostać użyty do utworzenia unikalnego ograniczenia w kolumnie.USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Unique(SSN) ) --Insert sample records in table Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null) ,('Aamir','Shahzad','000-00-0001') ,('Aamir','Shahzad','000-00-0002')
Sprawdź dane w dbo.Customer table za pomocą Select query
Jak dodać unikalne ograniczenie do kolumny w SQL Server |
Skorzystajmy z widoków systemowych, aby sprawdzić, czy dodano ograniczenie unikatowe i jaką nazwę nadał mu program SQL Server.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'UNIQUE'
Jak dodać unikalne ograniczenie w SQL Server |
Jak widać, SQL Server nadał nazwę UQ__Customer__CA1E8E3C7E8AFCB1 Unique Constraint. Jeśli chcemy zaimplementować jakąś konwencję nazewnictwa, powinniśmy sami podać nazwę.
Jeśli spróbujemy wstawić wartość, która już istnieje w kolumnie Unique Constraint, otrzymamy poniższy błąd.
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null)
Msg 2627, Poziom 14, Stan 1, Wiersz 11
Naruszenie ograniczenia UQ__Customer__CA1E8E3C7E8AFCB1 'UQ__Customer__CA1E8E3C7E8AFCB1'. Nie można wstawić zduplikowanego klucza w obiekcie „dbo.Customer”. Zduplikowana wartość klucza to (
Oświadczenie zostało zakończone.
Jeśli chcesz utworzyć Unikalne Ograniczenie z pewną konwencją nazewnictwa, możemy użyć poniższej składni.
USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Constraint UQ_Dbo_Customer_SSN Unique(SSN) )
Wideo demonstracyjne:co to jest unikatowe ograniczenie w SQL Server