Hvad er Unique Constraint i SQL Server:
Unik begrænsning i SQL Server oprettes på en kolonne eller kolonner for at begrænse kolonnen/erne til kun at acceptere unikke værdier.Kun enkelt nulværdi er tilladt i en kolonne, hvorpå Unik begrænsning er oprettet.
Scenarie:
Lad os sige, at du arbejder som SQL Server-udvikler for forsikringsselskab, du bliver bedt om at oprette dbo. Kundetabel, der skal have en kolonne SSN, og den skal altid acceptere Unikke værdier.Løsning:
Til ovenstående scenarie kan vi bruge Unique Constraint på SSN Column. Nedenstående script kan bruges til at skabe en unik begrænsning på en kolonne.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')
Tjek dataene i dbo.Kundetabel ved at bruge Vælg forespørgsel
Sådan tilføjes en unik begrænsning på en kolonne i SQL Server |
Lad os bruge systemvisningerne til at kontrollere, om Unique Constraint er tilføjet, og hvilket navn SQL Server har givet den.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'UNIQUE'
Sådan tilføjes unikke begrænsninger i SQL Server |
Som vi kan se, at SQL Serveren har givet "UQ__Customer__CA1E8E3C7E8AFCB1" navn til Unique Constraint. Hvis vi ønsker at implementere en eller anden navnekonvention, skulle vi selv have givet navn.
Hvis vi forsøger at indsætte den værdi, der allerede findes i kolonnen Unique Constraint, får vi fejlen nedenfor.
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null)
Msg 2627, Level 14, State 1, Line 11
Overtrædelse af UNIQUE KEY constraint 'UQ__Customer__CA1E8E3C7E8AFCB1'. Kan ikke indsætte dubletnøgle i objektet 'dbo.Customer'. Dubletnøgleværdien er (
Erklæringen er blevet afsluttet.
Hvis du gerne vil oprette den unikke begrænsning med en eller anden navnekonvention, kan vi bruge nedenstående syntaks.
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) )
Videodemo:Hvad er unik begrænsning i SQL Server