Сценарий:
Вие работите като разработчик на SQL Server, от вас се иска да предоставите скриптове за създаване на таблица dbo.Customer с уникално ограничение за колоните Име и Фамилия.Решение:
Както знаем, че уникалното ограничение в SQL Server е създадено върху колона или колони, за да ограничи колоната/ите, за да приемат само уникални стойности.Скриптът по-долу може да се използва за създаване на уникално ограничение върху множество колони в нашия случай име и фамилия.
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')
Ако сте забелязали инструкцията за вмъкване, в първия запис поставих и двете стойности Null за FirstName и Last Name. Във втория запис използвах стойността 'Aamir' за собствено име и Null за фамилно име. В 3-ти запис е обратно на 2-ри запис. Оттук разбираме, че уникалното ограничение работи върху стойностите на двете колони. Докато комбинираната стойност от двете колони е уникална, ще ни позволи да вмъкнем дори една от тях да е нула.
Ако искам да вмъкна друг запис, в който имам Null за фамилно име , ще ми позволи без проблем, тъй като е уникален от съществуващите стойности.
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza',Null,'000-00-0000')
Нека проверим записите в таблицата с помощта на заявка за избор.
Как да добавите уникално ограничение за множество колони в таблица на SQL Server |
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza',Null,'000-00-0000')
Msg 2627, ниво 14, състояние 1, ред 30 Нарушение на ограничението UNIQUE KEY 'UQ_Dbo_Customer_FName_LName'. Не може да се вмъкне дублиран ключ в обект 'dbo.Customer'. Стойността на дублирания ключ е (Raza,
Видео демонстрация:Създайте уникално ограничение за множество колони в SQL Server