What is Check Constraint :
Check Constraints limit the values that are accepted by one or more columns.Let's understand Check Constraint with real time scenario.
You are working as SQL Server developer, You need to create dbo.Customer table which should have columns such as FName, LName and Address. As FName is going be be VARCHAR so the users can insert string values that can contain alphabets, numeric and other characters. You want to write a Check Constraint so FName only accepts alphabets.Solution:
Let's create the table with Check Constraint by using below script--Create Table with
use YourDatabaseName
go
Createtable dbo.Customer
(
FName VARCHAR(100) NotNull,
LName VARCHAR(100),
StreetAddress VARCHAR(255),
Check (FName notlike'%[^a-z]%')
)
Let's insert some records in table and see if our Check Constraint is working as expected. It should let only insert those records in which FName only contains alphabets.
--insert some sample recordsWhen I executed above insert scripts, below are the messages I received from SQL Server.
insertinto dbo.Customer
(FName,LName,StreetAddress)
Values ('Aamir','Shahzad','xyz address')
go
insertinto dbo.Customer
(FName,LName,StreetAddress)
Values ('Aamir4','Shahzad','xyz address')
go
insertinto dbo.Customer
(FName,LName,StreetAddress)
Values ('abc3c','Shahzad','xyz address')
go
insertinto dbo.Customer
(FName,LName,StreetAddress)
Values ('-tName','Shahzad','xyz address')
(1 row(s) affected)
Msg 547, Level 16, State 0, Line 18
The INSERT statement conflicted with the CHECK constraint "CK__Customer__FName__5FB337D6". The conflict occurred in database "YourDatabaseName", table "dbo.Customer", column 'FName'.
The statement has been terminated.
Msg 547, Level 16, State 0, Line 22
The INSERT statement conflicted with the CHECK constraint "CK__Customer__FName__5FB337D6". The conflict occurred in database "YourDatabaseName", table "dbo.Customer", column 'FName'.
The statement has been terminated.
Msg 547, Level 16, State 0, Line 26
The INSERT statement conflicted with the CHECK constraint "CK__Customer__FName__5FB337D6". The conflict occurred in database "YourDatabaseName", table "dbo.Customer", column 'FName'.
The statement has been terminated.
It only inserted very first record that contains all alphabets for FName, rest of the records are rejected by our Check Constraint as they contain other characters than alphabets.
Let's check the data in table to make sure only single record is inserted.
What is Check Constraint in SQL Server and how to Create Check Constraint in SQL Server |