sql >> Databáze >  >> RDS >> Sqlserver

Jak vytvořit jedinečné omezení pro více sloupců v SQL Server - SQL Server / TSQL výukový program, část 96

Scénář:

Pracujete jako SQL Server Developer, jste požádáni o poskytnutí skriptů pro vytváření pro tabulku dbo.Customer s jedinečným omezením ve sloupcích Jméno a Příjmení.

Řešení:

Jak víme, jedinečné omezení v SQL Server je vytvořeno na sloupci nebo sloupcích, aby omezilo sloupec/y na přijímání pouze jedinečných hodnot.

Níže uvedený skript lze použít k vytvoření jedinečného omezení pro více sloupců v našem případě Jméno a Příjmení.

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')
 
 Pokud jste si všimli příkazu insert, do First Record jsem vložil obě hodnoty Null pro jméno a příjmení. Ve 2. záznamu jsem použil hodnotu 'Aamir' pro křestní jméno a Null pro příjmení. Ve 3. záznamu naopak ve 2. záznamu. Odtud jsme pochopili, že jedinečné omezení funguje na obou hodnotách sloupců. Pokud je kombinovaná hodnota z obou sloupců jedinečná, umožní nám to vložit i jeden z nich je null.

Pokud bych chtěl vložit další záznam, ve kterém mám jako příjmení Null , to mě bez problému nechá, protože je jedinečný z existujících hodnot.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 
 Pojďme zkontrolovat záznamy v tabulce pomocí výběrového dotazu.
Jak přidat jedinečné omezení pro více sloupců v tabulce SQL Server
Pokud se pokusíme vložit duplicitní záznamy, dostaneme se níže k chybě.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 Zpráva 2627, úroveň 14, stav 1, řádek 30 Porušení omezení UNIQUE KEY 'UQ_Dbo_Customer_FName_LName'. Nelze vložit duplicitní klíč do objektu 'dbo.Customer'. Hodnota duplicitního klíče je (Raza, ). Příkaz byl ukončen.



Video ukázka:Vytvoření jedinečného omezení pro více sloupců na serveru SQL


  1. Jak skrýt dekoraci sady výsledků ve výstupu Psql

  2. Přesunutí tabulky serveru SQL do jiné skupiny souborů

  3. Dělená tabulka Oracle

  4. Použití výrazů k filtrování dat databáze