sql >> Database >  >> RDS >> Sqlserver

Hoe een unieke beperking op meerdere kolommen in SQL Server te creëren - SQL Server / TSQL-zelfstudie deel 96

Scenario:

U werkt als SQL Server-ontwikkelaar, u wordt gevraagd om scripts te maken voor de dbo.Klanttabel met unieke beperking op de kolommen voornaam en achternaam.

Oplossing:

Zoals we weten, is de unieke beperking in SQL Server gemaakt voor een kolom of kolommen om de kolom(men) te beperken om alleen unieke waarden te accepteren.

Het onderstaande script kan worden gebruikt om een ​​unieke beperking voor meerdere kolommen te maken in ons geval Voornaam en Achternaam.

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')
 
 Als je de insert-instructie hebt opgemerkt, heb ik in First Record zowel Null-waarden voor FirstName als Last Name geplaatst. In 2e record gebruikte ik de waarde 'Aamir' voor voornaam en Null voor achternaam. In 3e record vice versa van 2e record. Vanaf hier begrijpen we dat de unieke beperking op beide kolomwaarden werkt. Zolang de gecombineerde waarde van beide kolommen uniek is, kunnen we zelfs één ervan null invoegen.

Als ik nog een record wil invoegen waarin ik Null voor achternaam heb , zal het me zonder enig probleem laten, omdat het uniek is van bestaande waarden.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 
 Laten we de records in de tabel controleren met behulp van de selectiequery.
Een unieke beperking toevoegen aan meerdere kolommen in SQL Server-tabel
Als we proberen dubbele records in te voegen, krijgen we onderstaande foutmelding.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 Msg 2627, niveau 14, staat 1, regel 30 Schending van UNIQUE KEY-beperking 'UQ_Dbo_Customer_FName_LName'. Kan geen dubbele sleutel invoegen in object 'dbo.Customer'. De dubbele sleutelwaarde is (Raza, ). De instructie is beëindigd.



Videodemo:unieke beperking maken voor meerdere kolommen in SQL Server


  1. maak een tabel met sequence.nextval in oracle

  2. Hoe de IDENTITY()-functie in SQL Server te gebruiken?

  3. Een gegevensmodel construeren voor een parkeerbeheersysteem

  4. Projectlinks werken niet op Wamp Server