Какво е уникално ограничение в SQL Server:
Уникалното ограничение в SQL Server е създадено върху колона или колони, за да ограничи колоната/ите, за да приемат само уникални стойности.В колона, върху която е създадено уникално ограничение, е разрешена само единична нулева стойност.
Сценарий:
Да приемем, че работите като разработчик на SQL Server за застрахователна компания, от вас се иска да създадете таблица dbo.Customer, която трябва да има колона SSN и винаги трябва да приема уникални стойности.Решение:
За горния сценарий можем да използваме уникално ограничение за SSN колона. Скриптът по-долу може да се използва за създаване на уникално ограничение за колона.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') Проверете данните в таблицата dbo.Customer, като използвате Select query
![]() |
| Как да добавите уникално ограничение към колона в SQL Server |
Нека използваме системните изгледи, за да проверим дали е добавено уникално ограничение и какво име му е дал SQL Server.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'UNIQUE'
![]() |
| Как да добавите уникално ограничение в SQL Server |
Както виждаме, SQL Server е дал име "UQ__Customer__CA1E8E3C7E8AFCB1" на уникално ограничение. Ако искаме да приложим някаква конвенция за именуване, тогава трябваше сами да предоставим име.
Ако се опитаме да вмъкнем стойността, която вече съществува в колона Unique Constraint, ще получим грешка по-долу.
Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza','M',Null) Съобщение 2627, ниво 14, състояние 1, ред 11
Нарушение на ограничението UNIQUE KEY 'UQ__Customer__CA1E8E3C7E8AFCB1'. Не може да се вмъкне дублиран ключ в обект 'dbo.Customer'. Стойността на дублирания ключ е (
Изявлението е прекратено.
Ако искате да създадете уникалното ограничение с някаква конвенция за именуване, можем да използваме синтаксиса по-долу.
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)
) Видео демонстрация:Какво е уникално ограничение в SQL Server

