sql >> Database >  >> RDS >> Sqlserver

Wat is controlebeperking in SQL Server - SQL Server / TSQL-zelfstudie, deel 82

Wat is Check Constraint :

Check Constraints beperken de waarden die door een of meer kolommen worden geaccepteerd.


Laten we Check Constraint begrijpen met een realtime scenario.

U werkt als SQL Server-ontwikkelaar. U moet een dbo.Customer-tabel maken die kolommen moet hebben zoals FName, LName en Address. Omdat FName VARCHAR wordt, kunnen gebruikers stringwaarden invoegen die alfabetten, numerieke en andere tekens kunnen bevatten. U wilt een controlebeperking schrijven zodat FName alleen alfabetten accepteert.

Oplossing:

Laten we de tabel maken met Check Constraint door onderstaand script te gebruiken

--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]%')
)
 
Laten we wat records in de tabel invoegen en kijken of onze Check Constraint werkt zoals verwacht. Het mag alleen die records invoegen waarin FName alleen alfabetten bevat.

--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')
 Toen ik bovenstaande invoegscripts uitvoerde, staan ​​hieronder de berichten die ik heb ontvangen van SQL Server.

(1 rij(en) getroffen)
Msg 547, Level 16, State 0, Line 18
De INSERT-instructie was in strijd met de CHECK-beperking "CK__Customer__FName__5FB337D6". Het conflict deed zich voor in de database "YourDatabaseName", tabel "dbo.Customer", kolom 'FName'.
De instructie is beëindigd.
Msg 547, Level 16, State 0, Line 22
De INSERT-instructie was in strijd met de CHECK-beperking "CK__Customer__FName__5FB337D6". Het conflict deed zich voor in de database "YourDatabaseName", tabel "dbo.Customer", kolom 'FName'.
De instructie is beëindigd.
Msg 547, Level 16, State 0, Line 26
De INSERT-instructie was in strijd met de CHECK-beperking "CK__Customer__FName__5FB337D6". Het conflict deed zich voor in de database "YourDatabaseName", tabel "dbo.Customer", kolom 'FName'.
De instructie is beëindigd.

Het heeft alleen het allereerste record ingevoegd dat alle alfabetten bevat voor FName, de rest van de records wordt afgewezen door onze controlebeperking omdat ze andere tekens dan alfabetten bevatten.

Laten we de gegevens in de tabel controleren om er zeker van te zijn dat er slechts één record is ingevoegd.
Wat is Check Constraint in SQL Server en hoe maak je Check Constraint in SQL Server
Videodemo:wat is Check Constraint en hoe maak je Check Constraint in SQL Server

  1. hoe flashbacken als we dataguard hebben

  2. ) Operator voor beginners

  3. ATAN() Functie in Oracle

  4. MySQL slaat eerste 10 resultaten over