Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erstellen Sie eine eindeutige Einschränkung für mehrere Spalten in SQL Server - SQL Server / TSQL-Tutorial Teil 96

Szenario:

Sie arbeiten als SQL Server-Entwickler und werden gebeten, Erstellungsskripts für die Tabelle „dbo.Customer“ mit eindeutiger Einschränkung für die Spalten „Vorname“ und „Nachname“ bereitzustellen.

Lösung:

Wie wir wissen, wird die Eindeutigkeitsbeschränkung in SQL Server für eine oder mehrere Spalten erstellt, um die Spalte/n darauf zu beschränken, nur eindeutige Werte zu akzeptieren.

Das folgende Skript kann verwendet werden, um eine Eindeutigkeitsbeschränkung für mehrere Spalten zu erstellen in unserem Fall FirstName und 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')
 
 Wenn Sie die Insert-Anweisung bemerkt haben, habe ich in First Record beide Nullwerte für FirstName und Last Name eingefügt. Im zweiten Datensatz habe ich den Wert „Aamir“ für den Vornamen und Null für den Nachnamen verwendet. Beim 3. Datensatz umgekehrt zum 2. Datensatz. Von hier aus verstehen wir, dass die eindeutige Einschränkung auf beide Spaltenwerte wirkt. Solange der kombinierte Wert aus beiden Spalten eindeutig ist, können wir sogar einen Nullwert einfügen.

Wenn ich einen weiteren Datensatz einfügen möchte, in dem ich Null für den Nachnamen habe , lässt es mich ohne Probleme, da es aus vorhandenen Werten eindeutig ist.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 
 Lassen Sie uns die Datensätze in der Tabelle mit der Auswahlabfrage überprüfen.
So fügen Sie eine eindeutige Einschränkung für mehrere Spalten in einer SQL Server-Tabelle hinzu
Wenn wir versuchen, doppelte Datensätze einzufügen, erhalten wir die folgende Fehlermeldung.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 Nachricht 2627, Ebene 14, Status 1, Zeile 30, Verletzung der UNIQUE KEY-Einschränkung „UQ_Dbo_Customer_FName_LName“. Doppelter Schlüssel kann nicht in Objekt „dbo.Customer“ eingefügt werden. Der doppelte Schlüsselwert ist (Raza, ). Die Anweisung wurde beendet.



Videodemo:Erstellen Sie eine eindeutige Einschränkung für mehrere Spalten in SQL Server