Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво представлява ограничението за проверка в SQL Server - SQL Server / TSQL урок, част 82

Какво е проверка на ограничението:

Отметка Ограниченията ограничават стойностите, които се приемат от една или повече колони.


Нека разберем проверката на ограничението със сценарий в реално време.

Вие работите като разработчик на 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате Top with Ties в SQL Server - SQL Server / TSQL урок, част 114

  2. SQL Server:Базата данни заседна в състояние на възстановяване

  3. ISJSON() Примери в SQL Server (T-SQL)

  4. Как да намеря порта за MS SQL Server 2008?

  5. Най-добрият начин за съхраняване на време (hh:mm) в база данни