Vad är kontrollbegränsning:
Check Constraints begränsar de värden som accepteras av en eller flera kolumner.Låt oss förstå Check Constraint med realtidsscenario.
Du arbetar som SQL Server-utvecklare, Du måste skapa dbo.Kundtabell som ska ha kolumner som FName, LName och Address. Eftersom FName kommer att vara VARCHAR så kan användarna infoga strängvärden som kan innehålla alfabet, numeriska och andra tecken. Du vill skriva en kontrollbegränsning så att FName bara accepterar alfabet.Lösning:
Låt oss skapa tabellen med Check Constraint genom att använda skriptet nedan--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]%') )
Låt oss infoga några poster i tabellen och se om vår Check Constraint fungerar som förväntat. Det ska bara tillåta att infoga de poster där FName bara innehåller alfabet.
--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')När jag körde ovanstående infogningsskript, nedan är meddelandena jag fick från SQL Server.
(1 rad(er) påverkade)
Msg 547, Level 16, State 0, Line 18
INSERT-satsen kom i konflikt med CHECK-begränsningen "CK__Customer__FName__5FB337D6". Konflikten inträffade i databasen "YourDatabaseName", tabell "dbo.Customer", kolumn "FName".
Utsatsen har avslutats.
Msg 547, Level 16, State 0, Line 22
INSERT-satsen stod i konflikt med CHECK-begränsningen "CK__Customer__FName__5FB337D6". Konflikten inträffade i databasen "YourDatabaseName", tabell "dbo.Customer", kolumn "FName".
Utsatsen har avslutats.
Msg 547, Level 16, State 0, Line 26
INSERT-satsen stod i konflikt med CHECK-begränsningen "CK__Customer__FName__5FB337D6". Konflikten inträffade i databasen "YourDatabaseName", tabell "dbo.Customer", kolumn 'FName'.
Utsatsen har avslutats.
Den infogade bara den allra första posten som innehåller alla alfabet för FName, resten av posterna avvisas av vår kontrollbegränsning eftersom de innehåller andra tecken än alfabet.
Låt oss kontrollera data i tabellen för att se till att endast en enda post har infogats.
Vad är Check Constraint i SQL Server och hur man skapar Check Constraint i SQL Server |
Videodemo:Vad är Check Constraint och hur man skapar Check Constraint i SQL Server