sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er Check Constraint i SQL Server - SQL Server / TSQL Tutorial Del 82

Hvad er Check Constraint :

Check Constraints begrænser de værdier, der accepteres af en eller flere kolonner.


Lad os forstå Check Constraint med realtidsscenarie.

Du arbejder som SQL Server-udvikler. Du skal oprette dbo. Kundetabel, som skal have kolonner som FName, LName og Address. Da FName vil være VARCHAR, så brugerne kan indsætte strengværdier, der kan indeholde alfabeter, numeriske og andre tegn. Du vil skrive en Check Constraint, så FName kun accepterer alfabeter.

Løsning:

Lad os oprette tabellen med Check Constraint ved at bruge nedenstående script

--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]%')
)
 
Lad os indsætte nogle poster i tabellen og se, om vores Check Constraint fungerer som forventet. Det bør kun lade indsætte de poster, hvor FName kun indeholder alfabeter.

--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')
 Da jeg udførte ovenstående indsæt-scripts, er de meddelelser, jeg modtog fra SQL Server nedenfor.

(1 række(r) påvirket)
Besked 547, niveau 16, tilstand 0, linje 18
INSERT-sætningen var i konflikt med CHECK-begrænsningen "CK__Customer__FName__5FB337D6". Konflikten opstod i databasen "YourDatabaseName", tabel "dbo.Customer", kolonne 'FName'.
Sætningen er blevet afsluttet.
Msg 547, Level 16, State 0, Line 22
INSERT-sætningen var i konflikt med CHECK-begrænsningen "CK__Customer__FName__5FB337D6". Konflikten opstod i databasen "YourDatabaseName", tabel "dbo.Customer", kolonne 'FName'.
Sætningen er blevet afsluttet.
Msg 547, Level 16, State 0, Line 26
INSERT-sætningen var i konflikt med CHECK-begrænsningen "CK__Customer__FName__5FB337D6". Konflikten opstod i databasen "YourDatabaseName", tabel "dbo.Customer", kolonne 'FName'.
Sætningen er blevet afsluttet.

Den indsatte kun allerførste post, der indeholder alle alfabeter for FName, resten af ​​posterne afvises af vores Check Constraint, da de indeholder andre tegn end alfabeter.

Lad os tjekke dataene i tabellen for at sikre, at der kun er indsat en enkelt post.
Hvad er Check Constraint i SQL Server, og hvordan man opretter Check Constraint i SQL Server

Videodemo:Hvad er Check Constraint og hvordan man opretter Check Constraint i SQL Server

  1. Hvordan kan jeg skrive SQL til en tabel, der deler det samme navn som et beskyttet søgeord i MySql?

  2. Hvilken datatype for breddegrad og længdegrad?

  3. TAN() Funktion i Oracle

  4. 2 måder at oprette en tabel på, hvis den ikke findes i SQL Server