Какво е уникално ограничение в 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