Какво е проверка на ограничението:
Отметка Ограниченията ограничават стойностите, които се приемат от една или повече колони.Нека разберем проверката на ограничението със сценарий в реално време.
Вие работите като разработчик на SQL Server, трябва да създадете таблица dbo.Customer, която трябва да има колони като FName, LName и Address. Тъй като FName ще бъде VARCHAR, така че потребителите да могат да вмъкват стойности на низове, които могат да съдържат азбуки, цифри и други знаци. Искате да напишете ограничение за проверка, така че FName да приема само азбуки.Решение:
Нека създадем таблицата с Check Constraint, като използваме скрипта по-долу--Create Table with use YourDatabaseName go Create table dbo.Customer ( FName VARCHAR(100) Not Null, LName VARCHAR(100), StreetAddress VARCHAR(255), Check (FName not like '%[^a-z]%') )
Нека вмъкнем някои записи в таблицата и да видим дали нашето ограничение за проверка работи според очакванията. Трябва да позволява само вмъкване на онези записи, в които FName съдържа само азбуки.
--insert some sample records insert into dbo.Customer (FName,LName,StreetAddress) Values ('Aamir','Shahzad','xyz address') go insert into dbo.Customer (FName,LName,StreetAddress) Values ('Aamir4','Shahzad','xyz address') go insert into dbo.Customer (FName,LName,StreetAddress) Values ('abc3c','Shahzad','xyz address') go insert into dbo.Customer (FName,LName,StreetAddress) Values ('-tName','Shahzad','xyz address')Когато изпълних горните скриптове за вмъкване, по-долу са съобщенията, които получих от SQL Server.
(1 ред(а) засегнати)
Съобщение 547, ниво 16, състояние 0, ред 18
Изразът INSERT е в конфликт с ограничението CHECK "CK__Customer__FName__5FB337D6". Конфликтът е възникнал в базата данни "YourDatabaseName", таблица "dbo.Customer", колона "FName".
Изявлението е прекратено.
Съобщение 547, ниво 16, състояние 0, ред 22
Инструкцията INSERT е в конфликт с ограничението CHECK "CK__Customer__FName__5FB337D6". Конфликтът е възникнал в база данни „YourDatabaseName“, таблица „dbo.Customer“, колона „FName“.
Изявлението е прекратено.
Съобщение 547, ниво 16, състояние 0, ред 26
Инструкцията INSERT е в конфликт с ограничението CHECK "CK__Customer__FName__5FB337D6". Конфликтът е възникнал в базата данни "YourDatabaseName", таблица "dbo.Customer", колона "FName".
Изявлението е прекратено.
Той е вмъкнал само първия запис, който съдържа всички азбуки за FName, останалите записи се отхвърлят от нашето ограничение за проверка, тъй като съдържат други знаци освен азбуки.
Нека проверим данните в таблицата, за да се уверим, че е вмъкнат само един запис.
Какво е ограничение за проверка в SQL Server и как да създадете ограничение за проверка в SQL Server |
Видео демонстрация:Какво е ограничение за проверка и как да създадете ограничение за проверка в SQL Server