Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist Check Constraint in SQL Server - SQL Server / TSQL Tutorial Teil 82

Was ist Check Constraint :

Check Constraints begrenzen die Werte, die von einer oder mehreren Spalten akzeptiert werden.


Lassen Sie uns Check Constraint mit einem Echtzeitszenario verstehen.

Sie arbeiten als SQL Server-Entwickler. Sie müssen eine dbo.Customer-Tabelle erstellen, die Spalten wie FName, LName und Address enthalten sollte. Da FName VARCHAR sein wird, können die Benutzer Zeichenfolgenwerte einfügen, die Buchstaben, Zahlen und andere Zeichen enthalten können. Sie möchten eine Check Constraint schreiben, damit FName nur Buchstaben akzeptiert.

Lösung:

Lassen Sie uns die Tabelle mit Check Constraint erstellen, indem Sie das folgende Skript verwenden (255),Markieren (FName nicht wie '%[^a-z]%'))
 
Lassen Sie uns einige Datensätze in die Tabelle einfügen und sehen, ob unsere Check Constraint wie erwartet funktioniert. Es sollte nur solche Datensätze einfügen lassen, in denen FName nur Buchstaben enthält.

--fügen Sie einige Beispieldatensätze eininsert into dbo.Customer(FName,LName,StreetAddress)Values ​​('Aamir','Shahzad ','xyz-Adresse')goinsert into dbo.Customer(FName,LName,StreetAddress)Values ​​('Aamir4','Shahzad','xyz address')goinsert into dbo.Customer(FName,LName,StreetAddress)Values ​​('abc3c ','Shahzad','xyz address')goinsert into dbo.Customer(FName,LName,StreetAddress)Values ​​('-tName','Shahzad','xyz address')
 Als ich die obigen Einfügeskripte ausgeführt habe, sind unten die Nachrichten, die ich von SQL Server erhalten habe.

(1 Zeile(n) betroffen)
Nachricht 547, Ebene 16, Status 0, Zeile 18
Die INSERT-Anweisung steht in Konflikt mit der CHECK-Einschränkung "CK__Kunde__FName__5FB337D6". Der Konflikt ist in der Datenbank „YourDatabaseName“, Tabelle „dbo.Customer“, Spalte „FName“ aufgetreten.
Die Anweisung wurde beendet.
Msg 547, Level 16, State 0, Line 22
Die INSERT-Anweisung stand in Konflikt mit der CHECK-Einschränkung „CK__Customer__FName__5FB337D6“. Der Konflikt ist in der Datenbank „YourDatabaseName“, Tabelle „dbo.Customer“, Spalte „FName“ aufgetreten.
Die Anweisung wurde beendet.
Msg 547, Level 16, State 0, Line 26
Die INSERT-Anweisung stand in Konflikt mit der CHECK-Einschränkung „CK__Customer__FName__5FB337D6“. Der Konflikt trat in der Datenbank "YourDatabaseName", Tabelle "dbo.Customer", Spalte 'FName' auf.
Die Anweisung wurde beendet.

Es wurde nur der allererste Datensatz eingefügt, der alle Alphabete für enthält FName, der Rest der Datensätze wird von unserem Check Constraint abgelehnt, da sie andere Zeichen als Buchstaben enthalten.

Überprüfen wir die Daten in der Tabelle, um sicherzustellen, dass nur ein einzelner Datensatz eingefügt wird.
Was ist Check Constraint in SQL Server und wie erstellt man Check Constraint in SQL Server

Video-Demo:Was ist Check Constraint und wie erstellt man Check Constraint in SQL Server